如何编写R代码以创建新列,以返回数据框中每一行的列表列的最频繁项

时间:2020-06-25 20:59:43

标签: r list dataframe frequency

当前代码如下所示。我正在尝试为数据帧的每一行在新列(viewWillDisappear中)返回列表中最常见的元素(df中的第12列)。 df$newCol中类型为df的列12的标题为list,其值类似于:df$status_combined

c("high", " medium", " medium")

1 个答案:

答案 0 :(得分:0)

根据您的描述,我假设df$status_combined是像下面创建的“ L”之类的list

set.seed(1)
L <- replicate(5, sample(c("high", "medium", "low"), 10, TRUE), FALSE)

就您的方法而言,您相距不远。我建议一个简单的函数,如下所示:

f <- function(x) names(sort(table(x), decreasing = TRUE))[1]

您只需执行以下操作即可获得结果:

sapply(L, f)
# [1] "medium" "low"    "high"   "low"    "low"  

如果您希望将所有值制成表格,则可以尝试以下操作:

table(rev(stack(setNames(L, seq_along(L)))))
#    values
# ind high low medium
#   1    3   3      4
#   2    2   5      3
#   3    4   2      4
#   4    2   4      4 ## <~~ You'll have to think about ties
#   5    1   5      4