【发布时间】:2017-11-08 17:24:19
【问题描述】:
我有一个看起来像这样的数据框:
df <- data.frame ("ID"=c(a, b, c, c, d, e, e), "K"= c(1, 1, 1, 1, 1, 1, 1),
"P"=c(1, 1, 1, 1, 2, 2, 1), "C"=c(1, 2, 1, 2, 1, 2, 1))
ID K P C
a 1 1 1
b 1 1 2
c 1 1 1
c 1 1 2
d 1 2 1
e 1 2 2
e 1 1 1
我正在尝试折叠具有相同 ID 值的行。
对于没有重复 ID 值的行,我希望该行保持不变。
对于具有重复 ID 值 (c & e) 的行,我希望它折叠行。对于每一列(K、P、C),我希望它查看每个重复行的值。如果 K 列中的两个值 = 1,则输出应保持为 1。如果 K 列中的两个值都不等于 1,则输出应为 -99。 P 列和 C 列相同。
所以理想的输出应该是这样的:
ID K P C
1 a 1 1 1
2 b 1 1 2
3 c 1 1 -99
5 d 1 2 1
6 e 1 -99 -99
到目前为止,我只知道:
for (row in 1:nrow(df) ) {
if length(df$ID) >=2
}
但我很困惑,因为我什至不知道这是否是正确的开始方式。
谢谢!
【问题讨论】:
-
标准也不是很清楚(至少对我来说),您能否详细解释一下??
标签: r merge conditional rows