r - 特定列中最常见的因素 - 打破最近的联系

标签 r text frequency mode desctools

我需要在数据集中创建一列,报告选择中最新按行模态文本值 列(忽略 NA)。

背景:我有一个数据集,其中最多有 4 名编码员对参与者成绩单进行评分(一名参与者/行)。有时,少数编码员要么不同意,要么为参与者/行选择错误的代码。因此,我需要为每个参与者(即每一行)跨编码器重复选择模态代码响应,并且当出现平局时,选择最近(稍后)的模态代码响应(因为后面的编码更有可能是正确的) )。

这是一个虚假的数据集示例,其中包含 3 个参与者(一个/行)的 4 个编码器代码(论文或聊天)。

> fakeData = data.frame(id = 1:3,
+                 Condition = c("Essay", "Chat", "Chat"),
+                 FirstCoder = c("NA","Essay","Essay"),
+                 SecondCoder = c("NA","Chat","Essay"),
+                 ThirdCoder = c("Essay","Chat","Chat"),
+                 FourthCoder = c("Essay","NA","Chat"))
> fakeData
  id Condition FirstCoder SecondCoder ThirdCoder FourthCoder
1  1     Essay         NA          NA      Essay       Essay
2  2      Chat      Essay        Chat       Chat          NA
3  3      Chat      Essay       Essay       Chat        Chat

关于新近度:“FirstCoder”首先编码,“SecondCoder”接下来编码,然后“ThirdCoder”提交其代码,“FourthCoder”是最后一个(也是最近的)提交的编码器回应。

以下是我在其他论坛上尝试过的一些方法 - 请注意我需要如何忽略“条件”列:

> fakeData$ModalCode1 <- apply(fakeData,1,function(x) names(which.max(table(c("FirstCoder","SecondCoder", "ThirdCoder", "FourthCoder")))))
> fakeData$ModalCode2 <- apply(select(fakeData,ends_with("Coder")), 1, Mode)

正确的结果是此列(手动创建)

> fakeData$MostRecentModalCode <- c("Essay", "Chat", "Chat")

您可以看到我的所有尝试都没有得到正确的结果(即“MostRecentModalCode”)

> fakeData
  id Condition FirstCoder SecondCoder ThirdCoder FourthCoder ModalCode1 ModalCode2 MostRecentModalCode
1  1     Essay         NA          NA      Essay       Essay FirstCoder         NA               Essay
2  2      Chat      Essay        Chat       Chat          NA FirstCoder       Chat                Chat
3  3      Chat      Essay       Essay       Chat        Chat FirstCoder      Essay                Chat

正如您所看到的,最后(正确)列忽略了 NA,并打破了与最新编码员响应的模态联系(与传统的 Mode 函数不同)。

当然有一个函数可以实现这一点,但我只是未能找到或正确实现它

欢迎提供建议和解决方案! (如果我必须创建一个自定义函数,那很好,尽管令人惊讶。)

最佳答案

我们可以使用here中的Mode函数

> Mode <- function(x) {
+   ux <- unique(x)
+   ux[which.max(tabulate(match(x, ux)))]
+ }
> 
> apply(fakeData[-1], 1, Mode)
[1] "Essay" "Chat"  "Chat" 

关于r - 特定列中最常见的因素 - 打破最近的联系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75960077/

相关文章:

python - 如何获取与某个单词相关的数字并打印该单词的次数?

java - 如何计算列表中自定义数据类型的值?

在 data.table 中滚动 cumsum

r - 计算从基准年 (t0) 到随后但有限的系列年 (t1, ..., tk) 的百分比变化

r - 按组进行条件子集化

r - 在 Shiny 的R中使用plotly绘制多线图

javascript - 从标签返回文本,其中最外层 HTML 标签适用于 jquery 中的所有文本节点

python - 正则表达式替换 Python

java - android实时获取声音频率?

excel - 使用 Excel FREQUENCY 函数绘制直方图