0

我有一个非常大的数据集,我正在尝试获取值的总和。变量是二进制的,有 0 和 1。

不知何故,当我运行一个 for 循环

for (i in 7:39){
agegroup1[53640, i]<-sum(agegroup1[, i])
}

循环处理,但除了第一列之外的所有内容都只包含 NA。我尝试调用这些值并且会看到 0 和 1,以及检查类(它返回“整数”)。但是当把它全部加起来时,R 不起作用。

有什么建议吗?

4

2 回答 2

3
cs <- colSums(agegroup1[, 7:39])

将为您提供不循环的列和向量(在 R 级别)。

如果您有任何缺失值(NAs),agegroup1[, 7:39]那么您可能需要添加na.rm = TRUEcolSums()调用(甚至是您的sum()调用)中。

你没有说它是什么agegroup1或它有多少行等,但要最终确定你的循环正在做什么,你需要

agegroup1[53640, 7:39] <- cs

在您开始添加列总和agegroup1[53640, ] 之前有什么?NA? 如果是这样,那将解释一些行为。

不过,我们确实需要更多细节……

于 2013-05-31T16:51:02.723 回答
1

@Gavin Simpson 提供了一个可行的解决方案,但您也可以使用 apply。此函数允许您将函数应用于行或列边距。

x <- cbind(x1=1, x2=c(1:8), y=runif(8))

# If you wanted to sum the rows of columns 2 and 3
apply(x[,2:3], 1, sum, na.rm=TRUE)

# If you want to sum the columns of columns 2 and 3
apply(x[,2:3], 2, sum, na.rm=TRUE)
于 2013-05-31T22:02:43.940 回答