新变量完成后删除子集

时间:2019-04-09 19:43:56

标签: r

我正在为数据集中的多个变量设置子集,以删除无用的数据点。当我输入第一个变量的subset命令并检查数据集时,该变量已正确成为子集。但是,对第二个变量执行相同的操作后,第一个不再是数据集中的子集。似乎第二个子命令覆盖了第一个子命令。在该示例中,一旦我对第二个变量(Weight)进行了子集化,我就想到第一个变量(Height)不再是子集。关于如何解决这个问题有什么想法吗?

rTestDataSet = TestDataSet
rTestDataSet = subset(TestDataSet, TestDataSet$Height < 4)
rTestDataSet = subset(TestDataSet, TestDataSet$Weight < 3)

2 个答案:

答案 0 :(得分:1)

您正在将两个子集都应用于原始数据。您需要做的是应用一个子集,将其保存到变量中,然后将第二个子集应用于此新变量。另外,正如已经指出的,使用子集时不需要$。

尝试:

制作一些可重复的数据:

 set.seed(50)
 TestDataSet <- data.frame("Height" = c(sample(1:10,30, replace = T)), Weight = sample(1:10,30, replace = T) )

 rTestDataSet = TestDataSet
 rTestDataSet = subset(rTestDataSet, Height < 4)

rTestDataSet 
   Height Weight
3       3      5
6       1      7
9       1      4
10      2      5
12      3      9
14      1      1
15      3      1
19      1      8
20      2      9
22      2      8
28      3      6

 rTestDataSet = subset(rTestDataSet, Weight < 3)

rTestDataSet
Height Weight
14      1      1
15      3      1

答案 1 :(得分:1)

为什么不使用tidyverse?将操作链接在一起以创建自己的逻辑。可以使用subset代替filter来有条件地获取所需的行:

library(tidyverse)
TestDataSet %>%
  filter(Height < 4) %>%
  filter(Weight < 3)

TestDataSet %>%
  filter(Height < 4 & Weight < 3)