簡體   English   中英

R:將數據列附加到基於兩列的頻率計數的數據幀中

[英]R: append column in a dataframe with frequency count based on two columns

我有一個像這樣的數據集:

name  height 
John    188
John    190
Jack    182
Jack    174
Jack    174

而且我需要在不修改數據集結構的情況下添加一列基於(名稱)和(高度)的頻率計數,例如:

name  height occurrence
John    188      1
John    190      1
Jack    182      1
Jack    174      2
Jack    174      2

有一個班輪嗎? 我環顧四周,但似乎找不到答案。 謝謝

使用data.table可以使用(感謝@David Arenburg的改進)

require(data.table)
setDT(df1)[, occurrence := .N, by = .(name, height)]

我的原始答案(它復制了通過:=引用添加的數據)

require(data.table)
setDT(df1)[,rep(.N,.N),.(name, height)]

您可以使用base R ave之類的函數

ave(1:nrow(df), paste(df$name, df$height), FUN = length)
# [1] 1 1 1 2 2

您也可以使用dplyr

require(dplyr)
data %>% 
   group_by(name,height) %>% 
   mutate(new = n()) %>% 
   data.frame()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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