我使用的数据集包含16个变量和4,000多个案例。我希望将数据分段为一个单独的数据框,该数据框仅包含其中一个变量设置为0的情况。
如果我不清楚,这里有一个简单的例子,希望有助于说明我的问题:
Ana =红色,1
Beth =蓝色,0
Cate = green,3
大卫=黄色,0
我如何通过R对数据集进行分段以创建一个新的数据框,忽略第二个变量= 0的情况?在这个例子中,我将有一个仅包含Ana和Cate的新数据框。同样,我将如何做相反的事情,即只用Beth和David创建一个数据框?
感谢您的帮助!
答案 0 :(得分:0)
假设这是您的data.frame
m <- data.frame(names = c("Ana", "Beth", "Cate", "David"),
colors = c("blue", "blue", "green", "yellow"), numbers = c(1, 0, 3, 0))
m
# names colors numbers
#1 Ana blue 1
#2 Beth blue 0
#3 Cate green 3
#4 David yellow 0
如果我理解正确,这里有两种获得结果的方法
id <- which(m[,"numbers"] > 0)
m[id,]
#1 Ana blue 1
#3 Cate green 3
或
subset(m, numbers > 0)
# names colors numbers
#1 Ana blue 1
#3 Cate green 3
subset(m, numbers == 0)
# names colors numbers
#2 Beth blue 0
#4 David yellow 0
答案 1 :(得分:0)
另一种方法是使用split
,它会返回两个list
的{{1}}个,其中一个用于data.frame
的行和那些&#34;的数字&GT; 0&#34 ;.使用的一个技巧是R在将数字转换为逻辑值时如何处理数字:任何非零的内容都会变为numbers == 0
。
因此,使用@ javlacalle的示例数据,请尝试:
TRUE
您可以按索引位置或名称访问相关的out <- split(m, as.logical(m$numbers))
out
# $`FALSE`
# names colors numbers
# 2 Beth blue 0
# 4 David yellow 0
#
# $`TRUE`
# names colors numbers
# 1 Ana blue 1
# 3 Cate green 3
:
data.frame