2017-02-19 51 views
0

我有从调查收集的数据。 csv文件看起来像这样。骑自行车穿过列R

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

你可以简单地在环路的两个不同计数器来捕捉这两个方面(或然而,许多OU有):

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 & count2

如果你有一个兆吨的变量,你可以创建一个列表,表或其他一些向量对,发送到一个嵌套循环中迭代要进行比较的列对。但是,如果您有兴趣获得的是每列列中具有多个列列和可能因子的列对中的总次数d == d,则可以考虑使用dplyr包。

如果使用group_by收集了两列,然后使用summarize()一些逻辑和filter拔出每个组值相当于对,你可以创建他们是相同的计数表。

这里是一个很好的链接,以这种方式使用dplyr:

dplyr tutorial using mtcars dataset

相关问题