R语言 根据频率填写新列[重复]

6yt4nkrj  于 2023-01-28  发布在  其他
关注(0)|答案(2)|浏览(186)
    • 此问题在此处已有答案**:

Add column to dataframe that shows frequency of a variable(4个答案)
Count number of rows per group and add result to original data frame(11个答案)
21小时前关门了。
假设我有下面的数据集,并且希望根据单词在"word"列中的出现频率来填充"freq"列。

#df
 word      freq
 a                       
 um
 yeah
 I'm
 no
 a

结果将如下所示:

word      freq
a          2 
um         1
yeah       1
I'm        1
no         1
a          2

我应该如何在R上编码?

rkue9o1l

rkue9o1l1#

使用dplyr,你可以做这样的事情;

library(dplyr)
df <- tibble(word =c("a", "um", "yeah", "I'm", "no", "a")) 

df %>% 
  group_by(word) %>% 
  add_tally(name = "freq") %>% 
  ungroup()
7cjasjjr

7cjasjjr2#

要计算每个观测值(包括每个观测值中的重复值),可以尝试按行求和,并将sapplystringr::str_count一起使用(将paste0用于单词边界)

df$count <- rowSums(sapply(df$word, function(x) 
                             stringr::str_count(df$word, paste0("\\b", x,"\\b"))))
#  word freq count
#1    a    2     2
#2   um    1     1
#3 yeah    1     1
#4  I'm    1     1
#5   no    1     1
#6    a    2     2

数据

df <- read.table(text = "word      freq
a          2 
um         1
yeah       1
I'm        1
no         1
a          2", header = TRUE)

注意,如果您的数据位于字符串的简单向量中,定义为str,您将执行以下操作:

rowSums(sapply(str, function(x) stringr::str_count(str, paste0("\\b", x,"\\b"))))

相关问题