【发布时间】:2018-03-21 19:20:04
【问题描述】:
我有以下数据集:
我想查看 action_ID 列中的 ID 并检查它是否在 value 列中。如果是,我想查看关联变量是否为Comment。如果是Comment,我会将该ID 的cmets 数加1 到一个新的数据帧中,称为final,它由action_ID 和cmets 数组成。
这是我目前写的代码:
final = data.frame(action_ID = c(1001,981,734,985))
for (x in shares$action_ID) {
if ((x %in% shares$value) & (shares$variable[shares$value == x] =="Comment")){
final$num_comments[final$action_ID == x] =+ 1
}else {
final$num_comments[final$action_ID == x] =+ 0
}
}
每当我运行它都不起作用。我试图通过查看 if 语句中的第一个条件来调试它,结果由于某种原因 if 语句并没有真正起作用。 action_ID 中的每个值都会被输出。我也尝试使用任何不起作用的方法。
for (x in shares$action_ID){
print(x)
if (any(shares$value == x)){ # & (shares$variable[shares$value == x]== "Comment")){
print(x)
}
}
输出:
[1] "734"
[1] "1001"
[1] "1001"
[1] "985"
[1] "981"
感谢您的帮助!!
编辑: 我认为我对输出不是很清楚,我正在尝试创建一个表格来计算具有 0 cmets、1 条评论、2 cmets 等的帖子的数量。
【问题讨论】:
-
最好使用
dput分享您的数据(或部分数据),而不是张贴图片 -
t <- table(df$action_ID[df$variable == 'Comment']); data.frame(t)或者如果您需要所有 IDt <- table(factor(df$action_ID)[df$variable == 'Comment']); data.frame(t)
标签: r for-loop if-statement