我在R中寻找解决这个问题的方法。我有一个这样的数据框:
A1 A2 A3 A4
22 a 1 1
22 b 3 3
21 c 1 2
23 w 1 1
22 a 4 4
当A1
和A1
的值为A2
和22
时,我想方设法更改a
列中的值。在这种情况下,当获得此格式时A1
的值为19
,数据框将如下所示:
A1 A2 A3 A4
19 a 1 1
22 b 3 3
21 c 1 2
23 w 1 1
19 a 4 4
答案 0 :(得分:2)
如果您有大型数据表,速度很重要,我建议使用data.table。这就是它的样子。
library(data.table)
example <- data.table(example)
setkey(example,A1,A2)
example[J(22,"a"), A1 := 19] #uses binary search, faster than example[A1 ==22 & A2 == "a", A1 := 19]
> example
A1 A2 A3 A4
1: 19 a 1 1
2: 22 b 3 3
3: 21 c 1 2
4: 23 w 1 1
5: 19 a 4 4
可以在更大的数据集上比较data.frame和data.table解决方案的时间。
答案 1 :(得分:1)
example <- data.frame(A1=c(22,22,21,23,22),A2=c("a","b","c","w","a"),A3=c(1,3,1,1,4),A4=c(1,3,2,1,4))
example$A1[example$A1==22 & example$A2=="a"] <- 19
> example
A1 A2 A3 A4
1 19 a 1 1
2 22 b 3 3
3 21 c 1 2
4 23 w 1 1
5 19 a 4 4