我可以在 R 中交换两个不同的单元格数据吗?

Can i exchange two different cell data in R?

我在 R 中有两个数据帧。我想比较两个数据帧并更改单元格数据。

data1
a
b
data11 data21
c 1
a 2

如果我比较[data1]和[data11],如果[data11]范围内存在“a”,那么我将“a”更改为“2”,这是data21中的同一行。

我假设您正在使用两个数据帧:

df1 <- data.frame(col1 = c("a", "b"))
df1
#>   col1
#> 1    a
#> 2    b

df2 <- data.frame(data11 = c("c", "a"), data21 = c(1, 2))
df2
#>   data11 data21
#> 1      c      1
#> 2      a      2

如果您使用 ifelse(),索引可能不正确(我们希望这里的结果为 "2" "b"):

ifelse(df1$col1 %in% df2$data11, df2$data21, df1$col1)
#> [1] "1" "b"

因此您可以使用 merge() 代替:

df3 <- merge(df1, df2, by.x = "col1", by.y = "data11", all.x = TRUE)
df3$data21 <- ifelse(is.na(df3$data21), df3$col1, df3$data21)
df3
#>   col1 data21
#> 1    a      2
#> 2    b      b