在r中使用dplyr groupwise替换列中的多个特定行
下面是我的在r中使用dplyr groupwise替换列中的多个特定行,r,dplyr,R,Dplyr,下面是我的InputDataSetdataset- Group Time Speed 1 5 25 # Ignore first 3 elements 1 10 23 # Ignore first 3 elements 1 15 21 # Ignore first 3 elements 1 20 33 # Speed - 5 1 25 40 # Speed - 5 1
InputDataSet
dataset-
Group Time Speed
1 5 25 # Ignore first 3 elements
1 10 23 # Ignore first 3 elements
1 15 21 # Ignore first 3 elements
1 20 33 # Speed - 5
1 25 40 # Speed - 5
1 30 42 # Speed - 5
1 35 52 # Speed - 5
1 40 48 # Speed - 5
1 45 52 # Speed - 5
2 5 48 # Ignore first 3 elements
2 10 42 # Ignore first 3 elements
2 15 39 # Ignore first 3 elements
2 20 36 # Speed - 5
2 25 38 # Speed - 5
2 30 46 # Speed - 5
2 35 53 # Speed - 5
3 5 45 # Speed - 5
3 10 58 # Speed - 5
在速度
列第3个元素之后的每组中,我想从其速度值中减去5,并在该列中替换。我如何使用dplyr实现这一点
这是我尝试过的,并且总是出现错误,在这里找不到使用replace()
函数的方法
InputDataSet <- InputDataSet %>% group_by(Group) %>% mutate(
Speed[-c(1:3)] = Speed[-c(1:3)] - 5)
以下是通过
row\u number
s的dplyr
方法:
library(dplyr)
df %>%
group_by(Group) %>%
mutate(
r_num = row_number(),
Speed = ifelse(r_num %in% 1:3, Speed, Speed -5))
# A tibble: 20 x 3
# Groups: Group [2]
Group Speed r_num
<dbl> <dbl> <int>
1 1 9.44 1
2 1 9.77 2
3 1 11.6 3
4 1 5.07 4
5 1 5.13 5
6 1 6.72 6
7 1 5.46 7
8 1 3.73 8
9 1 4.31 9
10 1 4.55 10
11 2 11.2 1
12 2 10.4 2
13 2 10.4 3
14 2 5.11 4
15 2 4.44 5
16 2 6.79 6
17 2 5.50 7
18 2 3.03 8
19 2 5.70 9
20 2 4.53 10
库(dplyr)
df%>%
分组依据(分组)%>%
变异(
r_num=行数(),
速度=ifelse(r_num%in%1:3,速度,速度-5))
#一个tibble:20x3
#分组:分组[2]
组速度r_num
1 1 9.44 1
2 1 9.77 2
3 1 11.6 3
4 1 5.07 4
5 1 5.13 5
6 1 6.72 6
7 1 5.46 7
8 1 3.73 8
9 1 4.31 9
10 1 4.55 10
11 2 11.2 1
12 2 10.4 2
13 2 10.4 3
14 2 5.11 4
15 2 4.44 5
16 2 6.79 6
17 2 5.50 7
18 2 3.03 8
19 2 5.70 9
20 2 4.53 10
数据:
set.seed(123)
df这是一种通过行数
s的dplyr
方法:
library(dplyr)
df %>%
group_by(Group) %>%
mutate(
r_num = row_number(),
Speed = ifelse(r_num %in% 1:3, Speed, Speed -5))
# A tibble: 20 x 3
# Groups: Group [2]
Group Speed r_num
<dbl> <dbl> <int>
1 1 9.44 1
2 1 9.77 2
3 1 11.6 3
4 1 5.07 4
5 1 5.13 5
6 1 6.72 6
7 1 5.46 7
8 1 3.73 8
9 1 4.31 9
10 1 4.55 10
11 2 11.2 1
12 2 10.4 2
13 2 10.4 3
14 2 5.11 4
15 2 4.44 5
16 2 6.79 6
17 2 5.50 7
18 2 3.03 8
19 2 5.70 9
20 2 4.53 10
库(dplyr)
df%>%
分组依据(分组)%>%
变异(
r_num=行数(),
速度=ifelse(r_num%in%1:3,速度,速度-5))
#一个tibble:20x3
#分组:分组[2]
组速度r_num
1 1 9.44 1
2 1 9.77 2
3 1 11.6 3
4 1 5.07 4
5 1 5.13 5
6 1 6.72 6
7 1 5.46 7
8 1 3.73 8
9 1 4.31 9
10 1 4.55 10
11 2 11.2 1
12 2 10.4 2
13 2 10.4 3
14 2 5.11 4
15 2 4.44 5
16 2 6.79 6
17 2 5.50 7
18 2 3.03 8
19 2 5.70 9
20 2 4.53 10
数据:
set.seed(123)
df当
library(dplyr)
library(data.table)
df %>%
mutate(Speed = rowid(Group) < 4 ~ Speed, TRUE ~ Speed - 5))
库(dplyr)
库(数据表)
df%>%
变异(速度=rowid(组)<4速度,真速度-5))
当
library(dplyr)
library(data.table)
df %>%
mutate(Speed = rowid(Group) < 4 ~ Speed, TRUE ~ Speed - 5))
库(dplyr)
库(数据表)
df%>%
变异(速度=rowid(组)<4速度,真速度-5))
请查看已编辑的解决方案。我尝试了这个,它成功了!非常感谢您,使用数据要容易得多。table
比dply
中的要容易得多。请查看已编辑的解决方案。我尝试了这个,它成功了!非常感谢,使用data.table比使用dply要容易得多