R如何在数据帧中获得相同类型的值

时间:2015-11-05 17:48:34

标签: r sorting dataframe

  

a< -c(“house”,“house”,“office”,“house”,“house”,“office”,“company”,“company”)

我想返回

房子4 办公室2 公司2

还有一个,我想只有在它超过2次时才会返回 喜欢

house 4

这样只返回房屋

2 个答案:

答案 0 :(得分:0)

你应该可以使用:

data_count <- table(dataset_name_here)

这将为您提供元素及其计数的列表。

答案 1 :(得分:0)

我发现很难处理您的示例数据,但假设您的解决方案类似于此:

df <- data.frame(dates = c(9565,9567,9569,9571,9573,9577), 
                type = c("",NA,"office","condo","office","house"),
                sfd = c("A","B","A","A","B","B"))

给出了

> df
  dates   type sfd
1  9565          A
2  9567   <NA>   B
3  9569 office   A
4  9571  condo   A
5  9573 office   B
6  9577  house   B

然后count关于建筑类型或您希望的任何一列。你也可以指望多列,顺序无关紧要。注: type这里是列名,而不是关键字参数。

count(df, type)
count(df, type, sfd)
count(df, sfd, type)

    type    sfd     n
  (fctr) (fctr) (int)
1             A     1
2  condo      A     1
3  house      B     1
4 office      A     1
5 office      B     1
6     NA      B     1

编辑:好的,您现在已经通过更改数据,数据类型等来改变了很多问题。但是,您现在要求的解决方案由

提供
a <-data.frame(c("house","house","office","house","house","office","company","company"))
freqdf <- data.frame(table(a))

company   house  office 
      2       4       2 

然后你想要将df仅限于那些超过一个值的那些,所以

freqdf[apply(freqdf, MARGIN = 1, function(x) all(x>3)), ]

产生

  a Freq

2 house 4

仅作为第二个元素,house的值为&gt; 3。