我有这样的数据
df<-structure(list(best2 = c(8972.7, 1944, 2022.7, 13001.7, NA, 3228.6,
NA, 186.4, 100, 2655.9), best3 = c(2634.4, 1181.3, 505.2, 2802.4,
NA, 1707.6, NA, 186.4, 100, 1219), best4 = c(3079.3, 1512.9,
NA, 2804.5, NA, 1597.6, NA, 186.4, 100, 1558.2), best5 = c(8972.7,
1944, NA, 13001.7, NA, 3228.6, NA, 186.4, 100, 2655.9), best6 = c(2634.4,
1181.3, NA, 2802.4, NA, 1707.6, NA, 186.4, 100, 1219), best7 = c(3079.3,
1512.9, NA, 2804.5, NA, 1597.6, NA, 186.4, 100, 1558.2), best8 = c(8972.7,
1944, NA, 13001.7, NA, 3228.6, NA, 186.4, 100, 2655.9), best9 = c(2634.4,
1181.3, NA, 2802.4, NA, 1707.6, NA, 186.4, 100, 1219)), .Names = c("best2",
"best3", "best4", "best5", "best6", "best7", "best8", "best9"
), row.names = c(NA, -10L), class = "data.frame")我想一次把这些事情都做完
1-计算所有单元格为空或NA的行数。
答:2
2-为所有单元格计算具有恒定值的行。
答:2
3行数行,上半空单元格
答:0
4-计算下半空单元格行
答:1
发布于 2017-06-07 19:33:59
我们可以使用apply函数迭代data.frame的行。然后,我们在逻辑向量上使用rowSums。
rowSums(all_logicals <- apply(df, 1, function(r){
n <- length(r)
nc2 <- n / 2
nc2_plus1 <- nc2 + 1
c('allNA' = all(is.na(r)),
'allconstant' = (length(unique(r)) == 1 & !all(is.na(r))),
'firsthalf' = all(is.na(r[1:nc2])) & !all(is.na(r[nc2_plus1:n])),
'secondhalf' = all(is.na(r[nc2_plus1:n])) & !all(is.na(r[1:nc2])))
}))
allNA allconstant firsthalf secondhalf
2 2 0 1 查看传递给apply的rowSums的结果可能会有所帮助
all_logicals
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
allNA FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE
allconstant FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
firsthalf FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
secondhalf FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE编辑-使用结果删除行
我们可以使用all_logicals查找希望删除的行索引:
remove_rows <- unique(unlist(apply(all_logicals, 1, which)))
(df_sub <- df[-remove_rows,])
best2 best3 best4 best5 best6 best7 best8 best9
1 8972.7 2634.4 3079.3 8972.7 2634.4 3079.3 8972.7 2634.4
2 1944.0 1181.3 1512.9 1944.0 1181.3 1512.9 1944.0 1181.3
4 13001.7 2802.4 2804.5 13001.7 2802.4 2804.5 13001.7 2802.4
6 3228.6 1707.6 1597.6 3228.6 1707.6 1597.6 3228.6 1707.6
10 2655.9 1219.0 1558.2 2655.9 1219.0 1558.2 2655.9 1219.0https://stackoverflow.com/questions/44421173
复制相似问题