gpt4 book ai didi

R循环遍历数据框并计算大于某个值的值并删除行

转载 作者:行者123 更新时间:2023-12-04 09:24:54 26 4
gpt4 key购买 nike

我想遍历一个大数据框,在第一列中计算有多少值 >0,删除那些被计算的行....然后转到第 2 列,计算值的数量 >0 并删除这些行等...

数据框

  taxonomy A B C
1 cat 0 2 0
2 dog 5 1 0
3 horse 3 0 0
4 mouse 0 0 4
5 frog 0 2 4
6 lion 0 0 2

可以用

生成
DF1 = structure(list(taxonomy = c("cat", "dog","horse","mouse","frog", "lion"),
A = c(0L, 5L, 3L, 0L, 0L, 0L), D = c(2L, 1L, 0L, 0L, 2L, 0L), C = c(0L, 0L, 0L, 4L, 4L, 2L)),
.Names = c("taxonomy", "A", "B", "C"),
row.names = c(NA, -6L), class = "data.frame")

我希望结果是

      A B C
count 2 2 2

我写了这个循环,但它并没有删除行

res <- data.frame(DF1[1,], row.names = c('count'))
for(n in 1:ncol(DF1)) {
res[colnames(DF1)[n]] <- sum(DF1[n])
DF1[!DF1[n]==1]
}

它给出了这个错误的结果

      A B C
count 2 3 3

最佳答案

你可以做...

DF = DF1[, -1]
cond = DF != 0
p = max.col(cond, ties="first")
fp = factor(p, levels = seq_along(DF), labels = names(DF))
table(fp)

# A B C
# 2 2 2

为了解释全为零的行,我认为这是可行的:

fp[rowSums(cond) == 0] <- NA

关于R循环遍历数据框并计算大于某个值的值并删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52632854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com