我有一个像下面这样的 Dataframe ,我想使用dplyr
的group_by
函数,将Gender
和Income
合并为一列。
df1 <- tribble(
~Country, ~Gender, ~var1, ~var2, ~ var3, ~Income,
"Bangladesh", "F", 2.5, 3, 1.5, "LM",
"Bangladesh", "M", 4.5, 4.3, 2.7, "LM",
"Laos", "F", 2.7, 3.2, 6.5, "LM",
"Laos", "M", 3.5, 5.1, 8.2, "LM",
"Ghana", "F", 8.5, 5, 7.5, "LM",
"Ghana", "M", 4, 6.7, 1.3, "LM",
"China", "F", 4.3, 6.1, 2.5, "UM",
"China", "M", 6.2, 2.8, 6.8, "UM",
)
我可以选择使用group_by
来连接两个数字clolumn,如下所示:
df1 %>%
group_by(Country, subgroup = var1 + var2) %>%
summarise()
但我不能这样做的字符clolumn:
df1 %>%
group_by(Country, subgroup = Gender + Income) %>%
summarise()
#Error: ! non-numeric argument to binary operator
我想分组后是什么样的东西如下
df2 <- tribble(
~Country, ~subgroup,
"Bangladesh", "F",
"Bangladesh", "M",
"Laos", "F",
"Laos", "M",
"Ghana", "F",
"Ghana", "M",
"China", "F",
"China", "M",
"Bangladesh", "LM",
"Bangladesh", "LM",
"Laos", "LM",
"Laos", "LM",
"Ghana", "LM",
"Ghana", "LM",
"China", "UM",
"China", "UM",
)
2条答案
按热度按时间a7qyws3x1#
你想要的输出并不是两列的总和,而是将其从“宽”转换为“长”。你可以使用
mapply
和c
合并它们或使用tidyr::pivot_longer()
(更流行)来获得你想要的输出:碱基R:
x1米3英寸/x1米4英寸
产出(按国家分列)
bmp9r5qi2#
如果行顺序无关紧要,可以使用
reframe()
: