根据 R 中的另一个数据框转换列的值
convert values of a column based on another dataframe in R
我有一个data.frame
df1=data.frame(f=LETTERS[1:4],v=c(1:4))
f v
1 A 1
2 B 2
3 C 3
4 D 4
第一列是因子列表,其中我有另一个包含这些值的数据框,它们也是因子
df2=data.frame(f=LETTERS[1:7],f2=letters[26:20])
f f2
1 A z
2 B y
3 C x
4 D w
5 E v
6 F u
我想知道如何编写一个函数,以便我可以将 df1 第一列的值更改为它们从 df2 映射到的值。我想得到:
f v
1 z 1
2 y 2
3 x 3
4 w 4
我尝试了 for 循环但没有成功。非常感谢 Ant 的建议
注意:这是我工作的一个简化示例。合并会添加太多无法使用的列,我认为额外的内存存储不会很有用
library(dplyr)
left_join(df1,df2)
我们可以使用match
df1$f <- df2$f2[match(df1$f, df2$f)]
df1
# f v
#1 z 1
#2 y 2
#3 x 3
#4 w 4
您可以使用merge
merge(df1,df2,by = "f")[,c(1,3,2)]
f f2 v
1 A z 1
2 B y 2
3 C x 3
4 D w 4
您可以尝试使用 merge
函数合并两个表,然后指定要保留的列。
例如:
df1 <- data.frame(f=LETTERS[1:4],v=c(1:4))
df2 <- data.frame(f=LETTERS[1:7],f2=letters[26:20])
merge(df1, df2, by.x = "f")[,c("f2", "v")]
f2 v
1 z 1
2 y 2
3 x 3
4 w 4
我有一个data.frame
df1=data.frame(f=LETTERS[1:4],v=c(1:4))
f v
1 A 1
2 B 2
3 C 3
4 D 4
第一列是因子列表,其中我有另一个包含这些值的数据框,它们也是因子
df2=data.frame(f=LETTERS[1:7],f2=letters[26:20])
f f2
1 A z
2 B y
3 C x
4 D w
5 E v
6 F u
我想知道如何编写一个函数,以便我可以将 df1 第一列的值更改为它们从 df2 映射到的值。我想得到:
f v
1 z 1
2 y 2
3 x 3
4 w 4
我尝试了 for 循环但没有成功。非常感谢 Ant 的建议
注意:这是我工作的一个简化示例。合并会添加太多无法使用的列,我认为额外的内存存储不会很有用
library(dplyr)
left_join(df1,df2)
我们可以使用match
df1$f <- df2$f2[match(df1$f, df2$f)]
df1
# f v
#1 z 1
#2 y 2
#3 x 3
#4 w 4
您可以使用merge
merge(df1,df2,by = "f")[,c(1,3,2)]
f f2 v
1 A z 1
2 B y 2
3 C x 3
4 D w 4
您可以尝试使用 merge
函数合并两个表,然后指定要保留的列。
例如:
df1 <- data.frame(f=LETTERS[1:4],v=c(1:4))
df2 <- data.frame(f=LETTERS[1:7],f2=letters[26:20])
merge(df1, df2, by.x = "f")[,c("f2", "v")]
f2 v
1 z 1
2 y 2
3 x 3
4 w 4