-1

我正在分析一个 CSV 文件的实验结果,其中变量作为列,参与者作为行。在收集所有数据之前,我想对已有的数据进行初步分析。但是,我需要将我的一些参与者排除在分析之外。在不删除他们的数据(这可能会在以后给我带来问题)的情况下,我想出的最佳方法是创建一个新列,将其称为“排除”,然后为每个参与者输入 1 或 0 来定义谁将被排除在外。然后,当我运行统计信息时,我只是对我的数据子集(例如,其中排除 == 0)执行此操作。

当我下载完整数据集时出现问题 - 如何从初步数据集的“排除”列中获取数据到完整数据集,确保所有 0 和 1 都附加到正确的参与者?如果初步数据集和完整数据集的行的顺序完全相同,我可以看到如何复制和粘贴,但这似乎容易出错,并且为了创建排除列,按不同的列排序要容易得多. 我试过了rbindmerge但据我所知,它们不起作用。

这是我正在尝试做的一个例子:

prelim <- data.frame(
participant = c(1,2,3),
exclude = c(0,1,0)
)

full = data.frame(
participant = c(1,2,3,4,5),
exclude = c(NA,NA,NA,NA,NA)
)

ideal = data.frame(
participant = c(1,2,3,4,5),
exclude = c(0,1,0,NA,NA)
)
4

2 回答 2

0

试试?合并

d <- merge(prelim, full, all = T)
d[!duplicated(d[,1]), ]

或者您可能对 data.table 感兴趣:

library(data.table)
DF1<-data.frame(x=1:3,y=4:6,t=10:12)
DF2<-data.frame(x=3:5,y=6:8,s=1:3)
library(data.table)
DF1 <- data.table(DF1, key = c("x", "y"))
DF2 <- data.table(DF2, key = c("x", "y"))
DF2[DF1] # for example
DF1[!DF2] # or maybe you want this?
DF2[!DF1]
于 2013-06-11T21:46:55.763 回答
0

鉴于我们看不到您的数据,我会考虑几种方法。

你可以:

导入两个数据集并根据您的条件和merge基于参与者标识符的完整数据集生成排除变量。如:

merge(preliminarydata, completedata, by.x='participantid', by.y='participantid')

或者使用运算符完成您的排除变量而不进行任何合并%in%

peopletoexclude <- which(participantsinfulldata %in% participantsinpreliminarydata)
myfulldataset$exclude <- 0
myfulldataset$exclude[peopletoexclude] <- 1

或者可能是人们能想到的无数其他事情。

或者只是删除要排除的人员并执行初步分析。值得指出的是,除非您明确write.csv覆盖旧的 CSV 文件,否则您在 R 中执行的任何数据操作都不会以任何方式影响您的原始 CSV。它加载数据,然后忘记您的 CSV。如果您需要保存分析,您可以save(myDatainR, file="myDatainR.Rdata")随时返回。

于 2013-06-07T14:37:44.190 回答