2016-05-10 100 views
2

所以我想计算一个不同的列值。这是该数据帧:在R中的数据帧的列中计算不同的值

asa 
---- 
aa 
bb 
aa 
aa 
bb 
cc 
dd 

想要得到的:

asa | n 
-------- 
aa | 3 
bb | 2 
cc | 1 
dd | 1 

我已经尝试使用ddply从Counting unique/distinct values by group in a data frame做此代码:(可重复)

asa<-c("aa","bb","aa","aa","bb","cc","dd") 
asad<-data.frame(asa) 
ddply(asad,~asa,summarise,n=length(unique(asa))) 

但我得到:

asa n 
1 aa 1 
2 bb 1 
3 cc 1 
4 dd 1 

它没有做计算。注意列中的值可以随时添加。所以并不总是“aa”,“bb”,“cc”和“dd”。它也可以用空格或逗号分隔(“aa bb”,“aa,bb”或“aa,bb”)。必须有一种方法。谢谢你提前

+1

试试这个:'表(ASA)' –

+0

我可以设定值的变量n的一个? – Elbert

+1

呵呵?把它放在像asad < - data.frame(table(asa))'这样的data.frame中,然后改变它的名字,例如'name(asad)< - c(“asa”,“n”)' –

回答

1

我们可以使用table

setNames(as.data.frame(table(df1$asa)), c("asa", "n")) 
# asa n 
#1 aa 3 
#2 bb 2 
#3 cc 1 
#4 dd 1 

或者与tallydplyr

library(dplyr) 
df1 %>% 
    group_by(asa) %>% 
    tally() 
# asa  n 
# (chr) (int) 
#1 aa  3 
#2 bb  2 
#3 cc  1 
#4 dd  1 
+0

让我做ss <-as.data.frame(表(asad $ asa))和ss [1,] $ Freq – Elbert

+0

@Elbert你有什么疑问? – akrun

+1

nvm。它工作正常!谢谢 – Elbert