将列中的值替换为其他两列值
Replace the value in column with respect to other two columns values
Data1
A B C
a 1 a,b
b 6 c,b
c 5 b,c
d 3 a,d
所以现在我想创建新专栏"D"
例如,它根据 A 列和 B 列的值替换值。
C D
a,b 1,6
c,b 5,6
b,c 6,5
a,d 1,3
我们可以使用chartr
。通过 paste
ing key/value
列即 'A' 和 'B' 为 chartr
创建 old
和 new
参数并使用 x
作为 'C' 列,将 'C' 中与 'A' 匹配的子字符串替换为 'B'
的子字符串
Data1$D <- with(Data1, chartr(paste(A,collapse=""), paste(B,collapse=""), C))
Data1$D
#[1] "1,6" "5,6" "6,5" "1,3"
更新
如果 'x' 来自不同的数据集
,这也应该有效
with(Data1, chartr(paste(A,collapse=""), paste(B,collapse=""), Data2$Col1))
#[1] "1,5" "6,3" "1,1" "1,5"
数据
Data1 <- structure(list(A = c("a", "b", "c", "d"), B = c(1L, 6L, 5L, 3L
), C = c("a,b", "c,b", "b,c", "a,d")), .Names = c("A", "B", "C"
), class = "data.frame", row.names = c(NA, -4L))
Data2 <- data.frame(Col1 = c("a,c", "b,d", "a,a", "a,c"), stringsAsFactors=FALSE)
Data1 A B C a 1 a,b b 6 c,b c 5 b,c d 3 a,d
所以现在我想创建新专栏"D"
例如,它根据 A 列和 B 列的值替换值。
C D a,b 1,6 c,b 5,6 b,c 6,5 a,d 1,3
我们可以使用chartr
。通过 paste
ing key/value
列即 'A' 和 'B' 为 chartr
创建 old
和 new
参数并使用 x
作为 'C' 列,将 'C' 中与 'A' 匹配的子字符串替换为 'B'
Data1$D <- with(Data1, chartr(paste(A,collapse=""), paste(B,collapse=""), C))
Data1$D
#[1] "1,6" "5,6" "6,5" "1,3"
更新
如果 'x' 来自不同的数据集
,这也应该有效with(Data1, chartr(paste(A,collapse=""), paste(B,collapse=""), Data2$Col1))
#[1] "1,5" "6,3" "1,1" "1,5"
数据
Data1 <- structure(list(A = c("a", "b", "c", "d"), B = c(1L, 6L, 5L, 3L
), C = c("a,b", "c,b", "b,c", "a,d")), .Names = c("A", "B", "C"
), class = "data.frame", row.names = c(NA, -4L))
Data2 <- data.frame(Col1 = c("a,c", "b,d", "a,a", "a,c"), stringsAsFactors=FALSE)