gpt4 book ai didi

r - 按 R 计算行中最常见的单词

转载 作者:行者123 更新时间:2023-11-30 22:50:30 25 4
gpt4 key购买 nike

下面有一个表格

   Name     Mon    Tue     Wed    Thu     Fri    Sat    Sun

1 John Apple Orange Apple Banana Apple Apple Orange
2 Ricky Banana Apple Banana Banana Banana Banana Apple
3 Alex Apple Orange Orange Apple Apple Orange Orange
4 Robbin Apple Apple Apple Apple Apple Banana Banana
5 Sunny Banana Banana Apple Apple Apple Banana Banana

所以,我想计算每个人最常见的水果并将这些值添加到新列中。

例如。

   Name     Mon    Tue     Wed    Thu     Fri    Sat    Sun      Max_Acc  Count

1 John Apple Orange Apple Banana Apple Apple Orange Apple 4
2 Ricky Banana Apple Banana Banana Banana Banana Apple Banana 5
3 Alex Apple Orange Orange Apple Apple Orange Orange Orange 4
4 Robbin Apple Apple Apple Apple Apple Banana Banana Apple 5
5 Sunny Banana Banana Apple Apple Apple Banana Banana Banana 4

我在查找行时遇到问题。我可以使用 table() 在列中找到频率功能。

>table(df$Mon)

Apple Banana
3 2

但在这里我想要新列中最常见的水果的名称。

最佳答案

如果我们需要与 max“Count”相对应的“Count”和“Names”,我们会循环遍历数据集的行(使用 apply >MARGIN = 1),使用table获取频率,从中提取最大值以及最大值对应的namesrbind 它和 cbind 与原始数据集。

cbind(df1, do.call(rbind, apply(df1[-1], 1, function(x) {
x1 <- table(x)
data.frame(Count = max(x1), Names=names(x1)[which.max(x1)])})))

# Name Mon Tue Wed Thu Fri Sat Sun Count Names
#1 John Apple Orange Apple Banana Apple Apple Orange 4 Apple
#2 Ricky Banana Apple Banana Banana Banana Banana Apple 5 Banana
#3 Alex Apple Orange Orange Apple Apple Orange Orange 4 Orange
#4 Robbin Apple Apple Apple Apple Apple Banana Banana 5 Apple
#5 Sunny Banana Banana Apple Apple Apple Banana Banana 4 Banana
<小时/>

或者我们可以使用data.table

library(data.table)
setDT(df1)[, c("Names", "Count") := {tbl <- table(unlist(.SD))
.(names(tbl)[which.max(tbl)], max(tbl))}, by = Name]

关于r - 按 R 计算行中最常见的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39299811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com