[英]R: Storing counts of occurences of strings from one column in a new column
假設我有一個數據框df ,看起來像這樣:
timestamp residence
2014/01/29 10:46:46 PM EST Virginia, USA
2014/01/29 10:51:01 PM EST Maryland, USA
2014/01/29 10:54:08 PM EST Massachusetts, USA
2014/01/29 10:55:00 PM EST Indiana, USA
2014/01/29 11:02:31 PM EST Michigan, USA
2014/01/29 11:19:42 PM EST Virginia, USA
現在,我要使用它並創建一個新的數據框df.count ,其中包含一列,該列唯一地(一次)列出了在df $ residence下找到的每個字符串,第二列列出了df $中每個字符串的出現次數住宅。 這類似於
table(df$residence)
但輸出格式將改為:
residence count
Virginia, USA 2
Maryland, USA 1
Massachusetts, USA 1
Indiana, USA 1
Michigan, USA 1
我想您可以使用table
來構建此新數據框:
tab <- table(df$residence)
data.frame(residence=names(tab), count=as.vector(tab))
# residence count
# 1 Indiana, USA 1
# 2 Maryland, USA 1
# 3 Massachusetts, USA 1
# 4 Michigan, USA 1
# 5 Virginia, USA 2
如果您可以僅以residence
為名:
with(df, data.frame(count=tapply(residence, residence, length)))
如果您想使用residence
的實際列:
with(df, {
summ <-tapply(residence, residence, length)
data.frame(residence=names(summ), count=summ)
} )
aggregate
另一種解決方案:
setNames(aggregate(seq(nrow(df)) ~ residence,df, length), c("residence","count"))
residence count
1 Indiana, USA 1
2 Maryland, USA 1
3 Massachusetts, USA 1
4 Michigan, USA 1
5 Virginia, USA 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.