如何将表中的每个列数据与用户定义的值进行比较?

时间:2018-02-20 05:01:11

标签: r

我有一个带有列

的表test.csv
X
1 
1 
1 
2 
2 
5 
5 
5 
5

我想将列X中的每个元素与1进行比较(在这种情况下,我有3个匹配项)

我想在新文件output.txt中计算数字和打印输出,如下所示

[c1]

1   2 3

接下来每个X列元素包含2个(此处为2个匹配项)

想要将结果附加到output.txt

[c1]
1  2  3
[c2]
4  5

接下来,X列中的每个元素都有5个(有4个匹配)

所以最终的output.txt是

[c1]
1  2  3
[c2]
4  5
[c3]
6 7 8 9

我当前的表包含一列中的750个元素。我想在上面的例子中创建一个输出。我可以使用for循环还是多个条件循环?

2 个答案:

答案 0 :(得分:0)

我花了一些时间阅读,你是在每个项目的位置之后

x <- c(1,1,1,2,2,5,5,5,5)
for (n in unique(x)) {
  print(paste(as.character(n), " was found at:"))
  print(which(x %in% n, arr.ind = TRUE))
}

将.csv文件写出来存储可能是个更好的主意。

答案 1 :(得分:0)

说实话,我发现这个问题有点令人困惑,因为你缺少专栏Y。但是,如果这是你想要的单行,那么你可以通过以下方式获得出现次数:

aggregate(data.frame(count = data$X), list(value = data$X), length)

和for循环

uvals <- unique(data$X)
result <- matrix(data = NA, nrow = length(uvals), ncol = 2)
colnames(result) <- c("val", "count")
for(i in 1:length(uvals)) {
    result[i, 1] <- uvals[i]
    result[i, 2] <- sum(data$X == uvals[i])
}

我还建议先进行计算,然后写入文件。