【发布时间】:2017-01-31 23:02:39
【问题描述】:
我在R 中尝试清理一些重复测量数据。在这一点上,它是长格式,我正在尝试修复一些条目,然后再转向宽格式 - 例如,如果人们接受我的调查太多次,我将删除这些行。我有两个主要问题要解决:
更改条目
如果有人在实际上应该是后测时从“前测链接”中进行了调查,我将使用以下代码对其进行修复:
data[data$UserID == 52118254, "Prepost"][2] <- 2
这会根据 ID 过滤掉那个人的条目,然后将第二个条目更改为后测。这段代码有足够的意义,回顾它会告诉我发生了什么。
删除一行
我正在努力获取有意义的代码来删除多余的行 - 例如,如果有人不小心点击了我的链接两次。我有如下数据:
UserID Prepost Duration..in.seconds.
1 52118250 1 357
2 52118284 1 226
3 52118284 1 11 #This is an extra attempt to remove
4 52118250 2 261
5 52118284 2 151
#to reproduce:
structure(list(UserID = c(52118250, 52118284, 52118284, 52118250, 52118284), Prepost = c("1", "1", "1", "2", "2"), Duration..in.seconds. = c("357", "226", "11", "261", "151")), class = "data.frame", row.names = c(NA, -5L), .Names = c("UserID", "Prepost", "Duration..in.seconds."))
我可以按 UserID 进行过滤,以查看谁使用了太多次,我正在寻找一种方法来轻松地从数据集中删除这些行。在这种情况下,用户 ID 52118284 已经使用了 3 次,需要删除第二次尝试。如果它像其他修复程序一样“可读”,那就更好了。
【问题讨论】:
-
或许
df[!duplicated(interaction(df$UserID,df$Prepost)),]? -
@A 我认为如果存在系统问题,这可能会奏效,但我必须逐案处理并确定哪个是错误的。
标签: r data-cleaning