计算非缺失事件

时间:2014-09-14 16:48:06

标签: r subset missing-data

我需要帮助计算跨文件的非缺失数据点的数量,并且只对较大数据帧的两列进行子集化。

我能够将数据限制为仅有效的响应,但后来我努力让它只返回两列。

我找到http://www.statmethods.net/management/subset.html并尝试了他们的解决方案,但myvars没有收藏我的列标签,它返回数据向量(1:10)。我的代码是:

myvars <- c("key")
answer <- data_subset[myvars]
answer

但是,它不是仅使用“key”列打印出我的数据子集,而是返回以下错误: “[.data.frame中的错误(observation_subset,myvars):未定义列选择”和“错误:未找到对象'回答'

最后,我不确定我是如何计算事件的。在Excel中,它们有一个简单的“计数”功能,在SPSS中你可以根据计数进行聚合,但是我找不到一个类似于R的命令。我曾经有过这么长的路要走了如果数据子集是添加一列只有1并且总结那些,但我想有一种更简单的方法。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

要计算唯一身份,请使用table

例如:

# load the "iris" data set that's built into R
data(iris)

# print the count of each species
table(iris$Species)

注意用于将prop.table转换为比例的方便函数table,以及表实际上可以采用第二个参数来获得交叉表的事实。还有一个参数useNA,将缺失值包含为唯一项(而不是忽略它们)。

答案 1 :(得分:0)

不确定这是否是你想要的。

按照帖子中提到的多个文件创建一些数据。

set.seed(42)
d1 <- as.data.frame(matrix(sample(c(NA,0:5), 5*10, replace=TRUE), ncol=10))
set.seed(49)
d2 <- as.data.frame(matrix(sample(c(NA,0:8), 5*10, replace=TRUE), ncol=10))

创建一个包含数据集作为列表元素的列表

l1 <- mget(ls(pattern="d\\d+"))

创建索引以对具有最大非缺失元素的列表元素进行子集化

indx <- which.max(sapply(l1, function(x) sum(!is.na(x))))

Key列来自larger(非缺失)数据集的子集

 key <- c("V2", "V3")

子集数据集

l1[[indx]][key]
 #   V2 V3
 #1  1  1
 #2  1  3
 #3  0  0
 #4  4  5
  #5  7  8

 names(l1[indx])
#[1] "d2"