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