r - 如何将分配为 0 或 1 的数据分组?
问题描述
我想按名称对数据集进行分组,如果相同的名称在响应列中至少包含一个 0,我想将其分配为 0,否则为 1。请查看数据和输出。
data = data.frame(stringsAsFactors = FALSE,
name = c("Mary", "Frank", "Tom", "Frank", "Mary"),
response = c(1, 0, 1, 0, 0))
例如,玛丽的响应值为 0 和 1,因此我将其分配为 0。请参见下面的输出。
Output = data.frame(stringsAsFactors = FALSE,
name = c("Mary", "Frank", "Tom"),
response = c(0, 0, 1))
解决方案
您可以取变量的最小值response
。
library(dplyr)
data %>%
group_by(name) %>%
summarise(response = min(response))
或者这可能更清楚:
data %>%
group_by(name) %>%
summarise(response = if(any(response == 0)) 0 else 1)
在基础 R 中,使用aggregate
:
aggregate(response~name, data, min)
推荐阅读
- reactjs - TypeError:_mapboxGl.default.Map 不是构造函数
- python - Selenium/BeautifulSoup 中的 Python
- javascript - 您如何遍历数组并仅提取特定值的键:值?
- excel - 柯拉兹猜想。找到最小的 a_k
- ruby-on-rails - 是否可以在 rails 4.2 中使用神社 3.0?这样我们就可以立即更换回形针
- android - Firebase Android 莫名崩溃
- javascript - 从javascript数组中提取具有唯一字符的字符串
- html - 使用css打印时如何将不同的标题添加到不同的页面?
- c# - 在特定应用程序上监视 C# 中的文件访问
- c++ - OpenGL整数纹理提升GL_INVALID_VALUE