在数据框B中查找数据框A的值,并将其替换为其他列的值(为面板研究创建唯一标识符)

时间:2015-04-12 21:56:23

标签: r dataframe uniqueidentifier

我想在另一个数据集A中找到值 dateframe B并用来自B的另一列的值替换它们。

我的问题详细: 我有十个数据集,它们共同组成一个小组研究。这意味着,有些人不止一次接受过采访,因此 - 在多个数据集中都有行。每个数据集还包含之前未接受过采访的新研究成员。 不幸的是,由于某些原因,必须删除代表研究成员的唯一标识符。我必须用另一个唯一标识符替换它 不会失去面板质量(也就是说,同一个人必须与他们出现的所有数据集中的相同标识符相关联。)

我的想法是a)加载所有数据集,b)使用带有旧标识符和新创建的标识符的分配表创建数据框,然后c)“搜索并替换”原始数据集中的标识符。 最后一步不起作用。

我有两个问题: 1)有谁知道如何做第3步? 2)我的方式似乎很麻烦。有谁知道一个更简单的解决方案?

#a) Loading
library(foreign)
#df1 <- read.spss("D1.sav", to.data.frame=TRUE, use.value.labels=FALSE)
#df2 <- read.spss("D2.sav", to.data.frame=TRUE, use.value.labels=FALSE)
#... (for all 10 datasets)
#For the sake of the example two random datasets that also 
#include some NA and "overlap"
df1 <- c(NA,NA,NA,seq(100,200))
df2 <- c(NA,NA,NA,seq(150,250))

#b)Creating Allocation (only for unique ids 
#because people who were interviewed more 
#than once should receive the same allocation 
#in all datasets (panel study))
df <- data.frame(id=c(df1,df2),
                 alloc=c(df1,df2))
df <- subset(df, !duplicated(df$id))
df$alloc <- 1:dim(df)[1]

#c)Overwriting old identifer with new one (doesn't work)
# Here for the example datasets:
df1 <- ifelse(df1 %in% df[,1], df[,2], df1)
df2 <- ifelse(df2 %in% df[,1], df[,2], df2)
#With the real datasets in this form:
#df1$identifer <- ifelse(df1$identifer %in% df[,1], 
#df[,2], df1$identifer)
#df2$identifer <- ifelse(df2$identifer %in% df[,1], 
#df[,2], df2$identifer)
#... (for all 10 datasets)

非常感谢你的帮助! 亲切的问候, 托马斯

0 个答案:

没有答案