根据R中的转换数据帧更改数据框列中的字符值

时间:2016-11-11 19:12:01

标签: r dataframe

我在R中有一个数据框,它有一列字符串/字符。我打电话给这个" myDat"下方。

我在R中有另一个数据框,它有两列字符串/字符。我称之为" conversionDat"下面。一列("名称")包含与" myDat"中的列类似的名称。另一列(" Name2")包含" myDat"列应转换为。

这是这两个数据框的MWE:

myDat <- data.frame(Name = c("A","D","P","R"))
conversionDat <- data.frame(Name = c("D","R","A","P"), Name2 = c("S","T","B","Z"))
myDat$Name <- as.character(myDat$Name)
conversionDat$Name <- as.character(conversionDat$Name)
conversionDat$Name2 <- as.character(conversionDat$Name2)

我想找到任何案例&#34; myDat&#34;等于&#34; conversionDat $ Name&#34;中的值并将其转换为&#34; conversionDat $ Name2&#34;。因此,在上面的MWE中,&#34; conversionDat&#34;数据框将保持不变,但是&#34; myDat&#34;数据框将成为:

B2
S2
Z2
T2

有没有一种无痛的方法可以做到这一点?任何想法将不胜感激!

1 个答案:

答案 0 :(得分:1)

一个无痛的方法是简单地合并两个,然后在Name2列中添加你需要的“2”?

myDat <- data.frame(Name = c("A","D","P","R"))
conversionDat <- data.frame(Name = c("D","R","A","P"), Name2 = c("S","T","B","Z"))


myDat <- merge(myDat, conversionDat, by = "Name")
myDat$Name2 <- paste(myDat$Name2, "2", sep = "")

> myDat
  Name Name2
1    A    B2
2    D    S2
3    P    Z2
4    R    T2