我正在尝试使用for循环在数据帧之间重新编码数据,并且我不断收到错误。
对于背景,df1 [,1]称为“Code”,有111个不同的观察值,df1 [,2]称为“KDE Code”。 df2 [,1]也称为“代码”,有14000个观测值(有些值具有相同的值df1,有些则没有)。我想根据df1中的值重新编码df2 [,1]中的值。
例如,如果df2 [,1] == df1 [,2]那么我想重新编码它以匹配df1 [,1]中的内容,但保持其他内容相同(以便我以后可以合并它们)。
一个真实的例子是学校在df1中被识别为012301,但是df2告诉我学校012301应该是14916.我已经尝试过for循环来改变它们,但我没有运气。
这是我的代码,我将不胜感激任何帮助!
for (i in 1:258) {
ifelse(df2[,1] == df1[i,3], df2[,1] <- df1[i,2], df2[,1])
}
This is what I have
<pre><code>`df1
[,1] [,2]
[1,] 1 101
[2,] 2 202
[3,] 3 303`
<pre><code>`df2
[,1]
[1,] 101
[2,] 202
[3,] 303
[4,] 404`
This is what I need
<pre><code>`df2
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 404`
答案 0 :(得分:0)
这是一个快速而肮脏的解决方案:
df1<-data.frame(pre=c(1, 2, 3), code=c(101, 202, 303))
df2<-data.frame(code=c(101, 202, 303, 404))
library(dplyr)
#Merge columns
newdf<-left_join(df2, df1)
#find NA rows and replace by first column
newdf$pre[is.na(newdf$pre)]<-newdf$code[is.na(newdf$pre)]
#drop the extra column
newdf<-data.frame(pre=newdf[,-1])
它会产生你想要的&#34; pre&#34;列作为数据帧。