![](/img/trans.png)
[英]Calculate the sum of the counts of a factor variable, as a subset of a dataframe in R
[英]aggregate sum of counts over factor in R
我對R非常陌生,這是我的第一個堆棧溢出問題,因此我希望這可能有點粗糙。 我具有以下結構的數據幀(來自.csv):
FeatureName Uuid Count
ClickHeadline ABC1 17
ChangeSetting ABC1 3
ClickHeadline CBA2 5
ChangeSetting CBA2 7
SomethingElse CBA2 5
我試圖弄清楚如何制作一個新的數據框,其中FeatureName的唯一值,ClickHeadline,ChangeSetting和SomethingElse因子現在是對每個Uuid的Count求和的變量。 因此,我想要的新數據框將是:
Uuid ClickHeadline ChangeSetting SomethingElse
ABC1 17 3 0
CBA2 5 7 5
我覺得我應該能夠對聚合函數執行此操作,但是我不知道如何告訴它對一個變量的計數求和。 我知道我不知所措,但是有人可以幫我解決這個問題嗎?
有很多可能性
如果需要sum
還可以使用reshape2
包dcast
函數
df <- read.table(header=T, text='
FeatureName Uuid Count
ClickHeadline ABC1 17
ChangeSetting ABC1 3
ClickHeadline CBA2 5
ChangeSetting CBA2 7
SomethingElse CBA2 5
')
library(reshape2)
dcast(df, Uuid ~ FeatureName, value.var="Count", sum)
Uuid ChangeSetting ClickHeadline SomethingElse
1 ABC1 3 17 0
2 CBA2 7 5 5
如果數據集僅限於您提供的范圍,則可以使用基本reshape
功能
out <- reshape(df, idvar="Uuid", timevar="FeatureName", v.names="Count", direction="wide")
out[is.na(out)] = 0
out
Uuid Count.ClickHeadline Count.ChangeSetting Count.SomethingElse
1 ABC1 17 3 0
3 CBA2 5 7 5
另一個基本的R替代方法是xtabs
,無需刪除NA
xtabs(Count ~ Uuid+FeatureName, df)
FeatureName
Uuid ChangeSetting ClickHeadline SomethingElse
ABC1 3 17 0
CBA2 7 5 5
tidyr
與一攬子解決方案spread
library(tidyr)
spread(df, key=FeatureName, value=Count, fill=0)
Uuid ChangeSetting ClickHeadline SomethingElse
1 ABC1 3 17 0
2 CBA2 7 5 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.