例如考虑以下数据框:
X[[i]] X[[i]] X[[i]]
1 1 1 1
2 1 1 2
3 1 2 2
4 0 3 0
5 3 3 3
6 0 3 0
7 4 3 4
8 4 4 4
结果将是:
X[[i]] X[[i]] X[[i]] output
1 1 1 0 1
2 1 1 2 1
3 1 2 2 2
4 0 3 0 0
5 3 3 3 3
6 0 3 0 0
7 4 3 4 4
8 4 4 4 4
数据框在每次执行中的行数和列数均不同。输出列的值是数字
谢谢。
答案 0 :(得分:2)
我们可以使用apply
遍历行,并使用Mode
cbind(df1, output = apply(df1, 1, FUN = Mode))
# X[[i]] X[[i]] X[[i]] output
#1 1 1 1 1
#2 1 1 2 1
#3 1 2 2 2
#4 0 3 0 0
#5 3 3 3 3
#6 0 3 0 0
#7 4 3 4 4
#8 4 4 4 4
其中
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
df1 <- structure(list(`X[[i]]` = c(1L, 1L, 1L, 0L, 3L, 0L, 4L, 4L),
`X[[i]]` = c(1L, 1L, 2L, 3L, 3L, 3L, 3L, 4L), `X[[i]]` = c(1L,
2L, 2L, 0L, 3L, 0L, 4L, 4L)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8"))
答案 1 :(得分:0)
您要计算的是每一行的mode。以下内容适用于任意数量的行和列:
sudo python test.py >> log.txt&
这将产生:
mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
df$output = apply(df, 1, mode)