如何根据分组依据和R中的顺序将字符添加到列中每个字符串的末尾?
How to add characters to the end of each string in column based on group by and order in R?
我有一个 table 看起来像这样:
Injury BL Time Delay (sec) Acute Time Delay (sec) Chronic Time Delay (sec) Acute Area Deficit (mm2)
1 Moderate 0.35 1.10 0.60 1.84
2 Severe 0.42 1.47 0.86 3.04
3 Moderate 0.45 1.02 0.65 1.80
4 Moderate 0.42 0.97 0.70 1.76
5 Severe 0.40 1.55 0.80 3.12
6 Moderate 0.37 0.96 0.65 1.65
7 Severe 0.32 1.64 0.75 3.34
8 Severe 0.40 1.44 0.90 3.24
9 Moderate 0.47 1.01 0.82 1.77
10 Moderate 0.41 0.90 0.67 1.51
11 Moderate 0.38 0.86 0.57 1.78
12 Severe 0.39 1.59 0.70 3.27
我想做的是根据组(Server_1、Moderate_1、Severe_2、Moderate_2、等等)。
当前代码是这样的,但它没有明确地将它添加到每个值,所以我的输出都是'_1'
my_data[] <- lapply(my_data, function(x) paste("1", x, sep="_"))
Injury BL Time Delay (sec) Acute Time Delay (sec) Chronic Time Delay (sec) Acute Area Deficit (mm2)
1 1_Moderate 0.35 1.10 0.60 1.84
2 1_Severe 0.42 1.47 0.86 3.04
3 1_Moderate 0.45 1.02 0.65 1.80
4 1_Moderate 0.42 0.97 0.70 1.76
我想使用 group_by 和管道,但出现错误并且不知道如何将每个组称为不同的值,这给了我一个错误。
update_df <- my_data %>%
group_by(Injury) %>%
lapply(function(x) paste("1", x, sep="_")) %>%
mutate_if(is.character, factor)
我猜您是在寻找每次伤害的累积外观:
my_data <- tibble(Injury = c("Injury", "Moderate", "Severe", "Moderate", "Moderate",
"Severe", "Moderate", "Severe", "Severe", "Moderate", "Moderate", "Moderate", "Severe"))
my_data %>%
group_by(Injury) %>%
mutate(Injury_num = paste(Injury, row_number(), sep = "_")) %>%
mutate(num_Injury = paste(row_number(), Injury, sep = "_")) %>%
ungroup()
结果
# A tibble: 13 x 3
Injury Injury_num num_Injury
<chr> <chr> <chr>
1 Injury Injury_1 1_Injury
2 Moderate Moderate_1 1_Moderate
3 Severe Severe_1 1_Severe
4 Moderate Moderate_2 2_Moderate
5 Moderate Moderate_3 3_Moderate
6 Severe Severe_2 2_Severe
7 Moderate Moderate_4 4_Moderate
8 Severe Severe_3 3_Severe
9 Severe Severe_4 4_Severe
10 Moderate Moderate_5 5_Moderate
11 Moderate Moderate_6 6_Moderate
12 Moderate Moderate_7 7_Moderate
13 Severe Severe_5 5_Severe
我有一个 table 看起来像这样:
Injury BL Time Delay (sec) Acute Time Delay (sec) Chronic Time Delay (sec) Acute Area Deficit (mm2)
1 Moderate 0.35 1.10 0.60 1.84
2 Severe 0.42 1.47 0.86 3.04
3 Moderate 0.45 1.02 0.65 1.80
4 Moderate 0.42 0.97 0.70 1.76
5 Severe 0.40 1.55 0.80 3.12
6 Moderate 0.37 0.96 0.65 1.65
7 Severe 0.32 1.64 0.75 3.34
8 Severe 0.40 1.44 0.90 3.24
9 Moderate 0.47 1.01 0.82 1.77
10 Moderate 0.41 0.90 0.67 1.51
11 Moderate 0.38 0.86 0.57 1.78
12 Severe 0.39 1.59 0.70 3.27
我想做的是根据组(Server_1、Moderate_1、Severe_2、Moderate_2、等等)。
当前代码是这样的,但它没有明确地将它添加到每个值,所以我的输出都是'_1'
my_data[] <- lapply(my_data, function(x) paste("1", x, sep="_"))
Injury BL Time Delay (sec) Acute Time Delay (sec) Chronic Time Delay (sec) Acute Area Deficit (mm2)
1 1_Moderate 0.35 1.10 0.60 1.84
2 1_Severe 0.42 1.47 0.86 3.04
3 1_Moderate 0.45 1.02 0.65 1.80
4 1_Moderate 0.42 0.97 0.70 1.76
我想使用 group_by 和管道,但出现错误并且不知道如何将每个组称为不同的值,这给了我一个错误。
update_df <- my_data %>%
group_by(Injury) %>%
lapply(function(x) paste("1", x, sep="_")) %>%
mutate_if(is.character, factor)
我猜您是在寻找每次伤害的累积外观:
my_data <- tibble(Injury = c("Injury", "Moderate", "Severe", "Moderate", "Moderate",
"Severe", "Moderate", "Severe", "Severe", "Moderate", "Moderate", "Moderate", "Severe"))
my_data %>%
group_by(Injury) %>%
mutate(Injury_num = paste(Injury, row_number(), sep = "_")) %>%
mutate(num_Injury = paste(row_number(), Injury, sep = "_")) %>%
ungroup()
结果
# A tibble: 13 x 3
Injury Injury_num num_Injury
<chr> <chr> <chr>
1 Injury Injury_1 1_Injury
2 Moderate Moderate_1 1_Moderate
3 Severe Severe_1 1_Severe
4 Moderate Moderate_2 2_Moderate
5 Moderate Moderate_3 3_Moderate
6 Severe Severe_2 2_Severe
7 Moderate Moderate_4 4_Moderate
8 Severe Severe_3 3_Severe
9 Severe Severe_4 4_Severe
10 Moderate Moderate_5 5_Moderate
11 Moderate Moderate_6 6_Moderate
12 Moderate Moderate_7 7_Moderate
13 Severe Severe_5 5_Severe