[英]Cycling through columns in R
我有一项调查收集的数据。 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循环?
您可以在循环中简单地拥有两个不同的计数器来捕获这两个计数(或者无论您有多少个):
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
的循环外创建一个初始表或变量。
如果您有大量的变量,则可以创建对的列表,表或其他向量对,以发送到嵌套循环中以迭代要比较的列对。
但是,如果您dplyr
具有多组列的列对中的d == d次总数以及每个列对中的可能因子,则可以考虑使用dplyr
程序包。
如果使用group_by
来收集两列,然后使用带有某些逻辑的summarize()
和filter
来提取每组值的等效对,则可以创建它们相同的计数表。
这是使用dplyr的良好链接:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.