gpt4 book ai didi

r - 如何将第一个值保留在多列中?

转载 作者:行者123 更新时间:2023-12-04 10:48:04 25 4
gpt4 key购买 nike

我有一个数据框。我想将第一个值保留在多列中。

我更喜欢使用管道 %>% 运算符的 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

最佳答案

你也可以这样做:

df %>%
mutate_at(vars(E1:N3), ~ substr(., 1, 1))

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

然后,如果它始终是数字并且您正在寻找数字向量,则可以执行以下操作:
df %>%
mutate_at(vars(E1:N3), ~ as.numeric(substr(., 1, 1)))

关于r - 如何将第一个值保留在多列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59079046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com