gpt4 book ai didi

r - 选择具有特定条件的子数据集而不使用应用和子集函数

转载 作者:行者123 更新时间:2023-12-04 10:34:34 25 4
gpt4 key购买 nike

我有如下数据集
df<-data.frame(name=c("alicia","samantha","john","jessie"), age=c(40,-23,30,28), income=c(100, 50, 120,60))
我想要做的是选择没有负值且值小于 100 的数据集。
我试过了
df[(df[,c(2:3)]>=0&df[,(2:3)]<=100),]
但是我无法删除大于 100 的值,而且我得到了很多 'NA's , 如下。

 #       name age income
# 1 alicia 40 100
# 3 john 30 120
# 4 jessie 28 60
# NA <NA> NA NA
# NA.1 <NA> NA NA
# NA.2 <NA> NA NA

我想在没有 apply 的情况下完成这项工作和 subset职能。

我想要的最终数据集是
#    name  age income  
# 1 alicia 40 100
# 2 jessie 28 60

顺便说一句,有人可以解释我为什么用 NAs 得到了额外的行。用我的代码 df[(df[,c(2:3)]>=0&df[,(2:3)]<=100),] ?

最佳答案

这可能就是你想要的。我们需要逐列评估它。

df[df$age > 0 & df$age <= 100 &  df$income > 0 & df$income <= 100, ]
# name age income
# 1 alicia 40 100
# 4 jessie 28 60

或者,如果这更容易,您可以这样做。我们使用了 rowSums这是因为如果每一行都满足您的条件,则总和将为二。
df[rowSums(df[,c(2:3)] >= 0 & df[,(2:3)] <= 100) == 2L, ]
# name age income
# 1 alicia 40 100
# 4 jessie 28 60

关于r - 选择具有特定条件的子数据集而不使用应用和子集函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60250841/

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