我有一个这样的数据框:
Column_A | Column_B | Column_C
---------|----------|---------
1 | A | ABCD
1 | B | ABCD
1 | C | ABCD
1 | D | ABCD
2 | B | BCDX
2 | C | BCDX
2 | D | BCDX
2 | X | BCDX
3 | A | ABCD
3 | B | ABCD
3 | C | ABCD
3 | D | ABCD
然后我想找出列C上分组的唯一性。此步骤的输出如下所示:
Column_A | Column_B
-------- | --------
ABCD | 2
BCDX | 1
此表显示了对于串联ABCD,我们在A列的顶部表中有两个unique
下一步是在D列中为ABCD的所有子字符串成员分配ABCD
Column_A | Column_B | Column_C
---------|----------|---------
1 | A | ABCD
1 | B | ABCD
1 | C | ABCD
1 | D | ABCD
2 | B | ABCD
2 | C | ABCD
2 | D | ABCD
2 | X |
3 | A | ABCD
3 | B | ABCD
3 | C | ABCD
3 | D | ABCD
在下一步中,我们需要将具有串联的行子集化。然后输出为:
Column_A | Column_B
---------|----------
2 | X
然后和前面一样,我们只需在C列中指定X,最终输出如下所示:
Column_A | Column_B | Column_C
---------|----------|-----------
1 | A | ABCD
1 | B | ABCD
1 | C | ABCD
1 | D | ABCD
2 | B | ABCD
2 | C | ABCD
2 | D | ABCD
2 | X | X
3 | A | ABCD
3 | B | ABCD
3 | C | ABCD
3 | D | ABCD
上表应该是我们的最终产出。有没有一种优雅的方法可以使用r/python来实现这一点?请注意,我们在dataframe中有更多的行,需要一个迭代的解决方案来对dataframe进行子集设置。你知道吗
谢谢
一种方法是使用
tidyverse
,用唯一组的max
替换所有的Column_C
,确定哪些Column_B
包含在Column_C
(使用grepl
)中,并用“X”替换那些不包含的,即我确信,如果我们将带有
map*
函数的rowwise()
操作从purrr
切换到rowwise()
操作,这会更有效,但我目前还不能做到。你知道吗相关问题 更多 >
编程相关推荐