使用R仅基于一列提取行

时间:2019-03-30 21:53:56

标签: r subset

请帮助,我需要基于一个列从表中提取数据, 这是我的桌子:

Col1 Col2  Col3 
1    34    3
1    34    4
2    342   3
2    23    4

我需要什么

Col1 Col2 Col3 
1    34   3
1    34   4

但最重要的是,我无法使用表df_extract<-df[df$Col1==1,]之类的值作为子集,我的目标是创建一种算法,该算法将自动检测不同的(唯一)值,然后再生成子集数据从查询[df $ Col1 == 1,]中没有输入12的表中 这是我的看法:
1)df_distinct%>% distinct(Col1) 2)下一步,使用df_distinct中的数据,表

中的子集数据

2 个答案:

答案 0 :(得分:0)

您可以将表转换为数据框,然后转换为子集。这可能是最简单的方法。

让您将表称为“ tab”,将新数据框称为“ df”。

df<-as.data.frame(tab)

现在,根据您感兴趣的列进行子集化要容易得多。我们将基于Col1的值对df进行子集化,以创建另一个名为“ df_subsetted”的df。

df_subsetted<-df[df$Col1==1,]

或者如果您想使用过滤器功能。

require(dplyr)
df_subsetted<-filter(df, Col1==1)

答案 1 :(得分:0)

尝试使用以下方法创建数据:

df <- data.frame(col1 = c(1,1,2,2,1,1,2,2),
                 col2 = c(34,34,342,23,34,34,342,23),
                 col3 = c(3,4,3,4,3,4,3,4))

并且,如果您希望仅基于一列进行子集化,则可以使用@ kyle-marsh解决方案

> df[df$col1 == 1, ]
  col1 col2 col3
1    1   34    3
2    1   34    4
5    1   34    3
6    1   34    4

而且,如果只需要不同的列,也许可以尝试一下

> unique(df[df$col1 == 1, ])
  col1 col2 col3
1    1   34    3
2    1   34    4

并且,如果您需要基于col1汇总数据,则可以尝试以下操作。由于col1是数字,

> aggregate(df[,-1], by = list(col1 = df$col1), sum)
  col1 col2 col3
1    1  136   14
2    2  730   14