请帮助,我需要基于一个列从表中提取数据, 这是我的桌子:
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,]中没有输入1
或2
的表中
这是我的看法:
1)df_distinct%>% distinct(Col1)
2)下一步,使用df_distinct中的数据,表
答案 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