我有一个包含重复变量的大数据框。这只是我的数据样本,用来说明这个问题:
df <- data.frame(
ID = rep(1:4, each = 1),
CMW = rep(c(10, 20, 30, 30), each = 1),
D_D = c(rep(100, 3), 200),
D_D = c(rep(100, 3), 200),
D_D = c(rep(100, 1), 200),
Eref = rep(4:4, each = 1),
Eref = rep(4:4, each = 1),
Eref = rep(1:4, each = 1),
Eref = rep(1:4, each = 1)
)
ID CMW DD DD.1 DD.2 Eref Eref.1 Eref.2 Eref.3
1 10 100 100 100 4 4 1 1
2 20 100 100 200 4 4 2 2
3 30 100 100 100 4 4 3 3
4 30 200 200 200 4 4 4 4
R会在变量名中添加数字以使其唯一,但具有相同“根名称”(点前的字符串)的变量实际上是相同的。所以我想做的是,如果变量重复,看看特定变量中的值,如果值相同,只保留该变量的一列。但是,如果有两组相同的变量是相同的,则保留每组中的一列。所以我想对数据帧中所有重复的变量进行处理。例如,从上面的数据帧示例(df)中,我希望得到以下结果:
ID CMW DD DD.1 Eref Eref.1
1 10 100 100 4 1
2 20 100 200 4 2
3 30 100 100 4 3
4 30 200 200 4 4
到目前为止,我能够用以下代码检查数据帧中是否有重复的变量:
duplicated_col <- unique(sub("\\.\\d+$", "", names(df))[duplicated(sub("\\.\\d+$", "", names(df)))])
但我不知道如何比较重复的变量并丢弃/保持以获得df_result。欢迎任何帮助。非常感谢。