当两列具有特定值时,替换行中的值

时间:2013-08-27 19:49:50

标签: r

我在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

A1A1的值为A222时,我想方设法更改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

2 个答案:

答案 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