我有一个数据框,有超过150个列,例如
df <- data.frame(name = c("Andy", "Bob", "Andy", "Cha", "Andy", "Bob", "Dil"),
num = c(1,NA, 0,NA, 1, NA, 0),
place=c("Andy", "Bob", "Andy", "Cha", "Andy", "Bob", "Dil"))
它将数据框显示为
name num place
1 Andy 1 Andy
2 Bob NA Bob
3 Andy 0 Andy
4 Cha NA Cha
5 Andy 1 Andy
6 Bob NA Bob
7 Dil 0 Dil
现在我已经看到,虽然变量名name
和place
不同,但第1列(name
)和第3列(place
)的值是相同。我的数据框中有150列数。所以我想找出代表与名为name
的变量(第1列)类似的信息类型的变量。
答案 0 :(得分:0)
如果您有兴趣获取具有相同第一列值的列的位置,则可以使用以下代码:
+====+========+========+
| id | group1 | group2 |
+====+========+========+
| 1 | a | b |
+----+--------+--------+
| 1 | b | c |
+----+--------+--------+
| 1 | c | d |
+----+--------+--------+
| 1 | d | - |
+----+--------+--------+
| 2 | a | b |
+----+--------+--------+
| 2 | b | - |
+----+--------+--------+
| 1 | c | d |
+----+--------+--------+
| 1 | d | - |
+----+--------+--------+
希望它会对你有所帮助。
答案 1 :(得分:0)
扩展Alistaire的评论,提取重复和非重复列的完整解决方案如下所示。
commonjs
...和输出:
df <- data.frame(name = c("Andy", "Bob", "Andy", "Cha", "Andy", "Bob", "Dil"),
num = c(1,NA, 0,NA, 1, NA, 0),
place=c("Andy", "Bob", "Andy", "Cha", "Andy", "Bob", "Dil"),
num2 = c(1,NA, 0,NA, 1, NA, 0))
library(magrittr)
# duplicated columns
df[1,duplicated.default(df)] %>% names(.)
# non-duplicated columns
df[1,!duplicated.default(df)] %>% names(.)
答案 2 :(得分:0)
如果要测试两列是否完全相同,请使用identical()
,例如
purrr::map_lgl(df, ~ identical(., df$name))
你得到:
name num place
TRUE FALSE TRUE