【发布时间】:2019-11-27 22:03:11
【问题描述】:
我有一个数据框。我想将第一个值保留在多个列中。
我更喜欢使用管道 %>% 运算符的 tidyverse 解决方案。我更喜欢可以输入 E1:N3 的解决方案,因为我在真实数据集中有大约 50 列。
这是数据框:
df <- data.frame(age = c(20, 25, 30), E1 = c("1 Alpha", "2 Bravo", "1 Alpha"), E2 = c("2 Bravo", "2 Bravo", "2 Bravo"), E3 = c("1 Alpha", "2 Bravo", "2 Bravo"), N1 = c("1 Alpha", "1 Alpha", "1 Alpha"), N2 = c("2 Bravo", "1 Alpha", "2 Bravo"), N3 = c("2 Bravo", "2 Bravo", "1 Alpha"))
df
#> age E1 E2 E3 N1 N2 N3
#> 1 20 1 Alpha 2 Bravo 1 Alpha 1 Alpha 2 Bravo 2 Bravo
#> 2 25 2 Bravo 2 Bravo 2 Bravo 1 Alpha 1 Alpha 2 Bravo
#> 3 30 1 Alpha 2 Bravo 2 Bravo 1 Alpha 2 Bravo 1 Alpha
这就是我想要的:
df_expected <- data.frame(age = c(20, 25, 30), E1 = c("1", "2", "1"), E2 = c("2", "2", "2"), E3 = c("1", "2", "2"), N1 = c("1", "1", "1"), N2 = c("2", "1", "2"), N3 = c("2", "2", "1"))
df_expected
#> age E1 E2 E3 N1 N2 N3
#> 1 20 1 2 1 1 2 2
#> 2 25 2 2 2 1 1 2
#> 3 30 1 2 2 1 2 1
【问题讨论】: