我从调查中收集了数据。 csv文件看起来像这样。
1c x x 1e x x 2c x x 2e x x
D x x D x x R x x R x x
R x x R x x D x x D x x
D x x D x x R x x R x x
R x x R x x R x x R x x
等等...
x表示此分析中未使用的其他数据。
1c和1e(或任何配对列)的响应应该相同。它是作为操纵检查完成的,以测试参与者是否正在关注。我想计算“D”的数量和“R”的数量,但如果配对的列不匹配,则不会计算。
现在我正在做这样的事情:
final <- read("data.csv")
for(i in 1:length(rownames(final))){
if(final$X1c[i] == final$X1e[i]){
count <- append(count, as.character(final$X1c[i]))
}
}
for(i in 1:length(rownames(final))){
if(final$X2c[i] == final$X2e[i]){
count <- append(count, as.character(final$X2c[i]))
}
}
然后一直打开。
我该如何做到这一点,以便我不必为每个问题都有一个单独的for循环?
答案 0 :(得分:0)
你可以在循环中简单地使用两个不同的计数器来捕获这两个计数(或者无论多少计数):
final <- read("data.csv")
for(i in 1:length(rownames(final))){
if(final$X1c[i] == final$X1e[i]){
count <- append(count, as.character(final$X1c[i]))
if(final$X2c[i] == final$X2e[i]){
count2 <- append(count2, as.character(final$X2c[i]))
}
}
但我会在count
&amp;的循环之外创建一个或多个初始表。 count2
。
如果你有大量的变量,你可以创建一个列表,表格或其他一对对矢量,发送到嵌套循环中,迭代要对的列对。
但是,如果您有兴趣获得的是具有多个列列的列对中的d == d的总次数以及每个列对中可能的因子,您可以考虑使用dplyr
包。
如果您使用group_by
收集两列,然后使用带有某些逻辑的summarize()
和filter
来获取每组值的等效对,则可以创建表格计算它们相同的位置。
这是一个以这种方式使用dplyr的好链接: