我需要帮助计算跨文件的非缺失数据点的数量,并且只对较大数据帧的两列进行子集化。
我能够将数据限制为仅有效的响应,但后来我努力让它只返回两列。
我找到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并且总结那些,但我想有一种更简单的方法。
感谢您的帮助。
答案 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"