作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想计算多列中的对。也就是说,对于两列以上,计算同一行中特定值对出现的次数。
假设我问一些人是否喜欢不同种类的食物,他们可以回答"is"或“否”。我最终得到了这个数据集:
foods <-
data.frame(
fruit = c("yes", "yes", "no"),
veg = c("yes", "yes", "yes"),
meat = c("yes", "no", "yes")
)
foods
我想计算任意两种食物得到"is"的次数。我希望最终能得到这样的结果:
desired <-
data.frame(
pair.1 = c("fruit", "fruit", "veg"),
pair.2 = c("veg", "meat", "meat"),
Freq = c(2, 1, 2)
)
desired
这也可以工作:
desired.2 <-
data.frame(
pair. = c("fruit, veg", "fruit, meat", "veg, meat"),
Freq = c(2, 1, 2)
)
desired.2
如果可能的话,我希望我可以使用一个解决方案最终对 3、4 等的组合执行相同的操作(我的实际数据有超过 3 列)。有什么好的解决方案,最好使用 dplyr?
预先感谢您的帮助!
最佳答案
一个 dplyr
和 purrr
解决方案可能是:
map_dfr(.x = combn(names(foods), 2, simplify = FALSE),
~ foods %>%
select(.x) %>%
summarise(pair_1 = .x[1],
pair_2 = .x[2],
n = sum(rowSums(select(., everything()) == "yes") == 2)))
pair_1 pair_2 n
1 fruit veg 2
2 fruit meat 1
3 veg meat 2
如果你想要更通用的东西:
fun <- function(x) {
map_dfr(.x = combn(names(foods), x, simplify = FALSE),
~ foods %>%
select(.x) %>%
summarise(pairs = paste(.x, collapse = " "),
n = sum(rowSums(select(., everything()) == "yes") == x)))
}
fun(2)
pairs n
1 fruit veg 2
2 fruit meat 1
3 veg meat 2
关于r - 跨几列,计算对的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62698929/
我正在尝试使用描述的方法将数据表转换为字典 here , 但我得到一个错误 Cannot implicitly convert type System.Collections.Generic.Dict
我想在几个列上使用 orderBY,但它们应该像一列一样。 该表看起来像这样: col1 | col2 5 | 2 | | 3 7 | | 1 | 1
我有这张表 mytable: +----+--------------------------------------+ | id | date1 | date2 | date3
我是一名优秀的程序员,十分优秀!