我正在寻找一种有效的方法来操作大量数据,以便重复同一组中同一列中所有行中组的最后一行的值(由V1中的值给出)。
输入:
id V1 V2 V3
1 A 10 0
2 A 13 0
3 A 20 0
4 A 0 10
5 B 25 0
6 B 14 0
7 B 1 0
8 B 0 6
输出:
id V1 V2 V3
1 A 10 10
2 A 13 10
3 A 20 10
4 A 0 10
5 B 25 6
6 B 14 6
7 B 1 6
8 B 0 6
答案 0 :(得分:2)
这应该适用于dplyr。
假设您的数据存储在名为df
的数据框中 df <- df %>% group_by(V1) %>% mutate(V3 = last(V3))
答案 1 :(得分:0)
您可以使用group_by
包中的mutate
和last
以及dplyr
:
library(tibble)
library(dplyr)
your_data <- tribble(~id, ~V1, ~V2, ~V3,
1 , "A" , 10, 0,
2 , "A" , 13, 0,
3 , "A" , 20, 0,
4 , "A" , 0 , 10,
5 , "B" , 25, 0,
6 , "B" , 14, 0,
7 , "B" , 1 , 0,
8 , "B" , 0 , 6)
your_data %>%
group_by(V1) %>%
mutate(V3 = last(V3))
#> # A tibble: 8 x 4
#> # Groups: V1 [2]
#> id V1 V2 V3
#> <dbl> <chr> <dbl> <dbl>
#> 1 1.00 A 10.0 10.0
#> 2 2.00 A 13.0 10.0
#> 3 3.00 A 20.0 10.0
#> 4 4.00 A 0 10.0
#> 5 5.00 B 25.0 6.00
#> 6 6.00 B 14.0 6.00
#> 7 7.00 B 1.00 6.00
#> 8 8.00 B 0 6.00