如何从R中的特定列按行获取最频繁的分类值?

如何从R中的特定列按行获取最频繁的分类值?,r,R,关于访问类型,我有一个类似时间和日期列的数据 Below is the sample data[1] [1]: https://i.stack.imgur.com/GfnQb.png 从上面的数据中,我必须逐行获得最大重复值 I tried like below out1$MAX1 <- do.call('pmax',c(out1[,2:5],list(na.rm=TRUE))) 它为某些行提供了错误的值。例如,在上面的第三行输出中,我们有“SFU”、“SFU”、“SFU”、“SFU

关于访问类型,我有一个类似时间和日期列的数据

Below is the sample data[1]
 [1]: https://i.stack.imgur.com/GfnQb.png
从上面的数据中,我必须逐行获得最大重复值

I tried like below
out1$MAX1 <- do.call('pmax',c(out1[,2:5],list(na.rm=TRUE)))
它为某些行提供了错误的值。例如,在上面的第三行输出中,我们有“SFU”、“SFU”、“SFU”、“SFU、GFU”。通过使用上面的最大代码,获得最大值为“SFU、GFU”。但它必须获得“SFU”。我必须添加新列,说明访问类型重复了多少次(即,对于同一第三行“SFU”)是最大值,重复4次)。
如何实现这一点?

根据您最初的问题,您可以通过以下方式获得最频繁的分类值:(1)创建一个函数,该函数列出向量并返回最频繁的值;(2)在数据框中循环,取消列出每一行并调用函数:

# Create sample data
df <- data.frame(
  id = 1:5,
  v1 = sample(c("SFU", "GFU"), replace = TRUE, 5),
  v2 = sample(c("SFU", "GFU"), replace = TRUE, 5),
  v3 = sample(c("SFU", "GFU"), replace = TRUE, 5),
  v4 = sample(c("SFU", "GFU"), replace = TRUE, 5),
  stringsAsFactors = FALSE
)

# Create function
get_most_frequent <- function(x) {
  tab <- sort(table(x))
  out <-  names(tail(tab, 1))
  out
}

# Loop through data frame
df$most_frequent <- vector(mode = "character", length = nrow(df))
for (i in 1:nrow(df)) {
  r <- unlist(df[i,2:5])
  df$most_frequent[i] <- get_most_frequent(r)
}
#创建示例数据

df请使用
dput
而不是图像添加数据。阅读如何给出一个答案。
# Create sample data
df <- data.frame(
  id = 1:5,
  v1 = sample(c("SFU", "GFU"), replace = TRUE, 5),
  v2 = sample(c("SFU", "GFU"), replace = TRUE, 5),
  v3 = sample(c("SFU", "GFU"), replace = TRUE, 5),
  v4 = sample(c("SFU", "GFU"), replace = TRUE, 5),
  stringsAsFactors = FALSE
)

# Create function
get_most_frequent <- function(x) {
  tab <- sort(table(x))
  out <-  names(tail(tab, 1))
  out
}

# Loop through data frame
df$most_frequent <- vector(mode = "character", length = nrow(df))
for (i in 1:nrow(df)) {
  r <- unlist(df[i,2:5])
  df$most_frequent[i] <- get_most_frequent(r)
}