簡體   English   中英

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還可以使用reshape2dcast函數

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM