划分数据列中的特定单元格
Dividing specific cell in data column
我正在尝试将每个特定 ID 的第一个观察值除以 0.25。
我该怎么做?
例如我想将 ID 24 的第一个观察值除以 0.25,这样值(当前为 10)将更改为 (10/0.25) = 40
代码应该对所有具有 'Obs = 1' 的 ID 执行相同的操作,例如ID“25”的第一次观察应该是 (5/0.25) = 20.
我的数据示例如下:
Obs ID Value
1 24 10
2 24 4
3 24 2
4 24 3
5 24 5
6 24 4
7 24 2
8 24 1
1 25 5
2 25 6
3 25 2
4 25 4
我该怎么做?
谢谢!
您可以将 Value
除以 0.25,其中 Obs = 1
。
inds <- df$Obs == 1
df$Value[inds] <- df$Value[inds]/0.25
df
# Obs ID Value
#1 1 24 40
#2 2 24 4
#3 3 24 2
#4 4 24 3
#5 5 24 5
#6 6 24 4
#7 7 24 2
#8 8 24 1
#9 1 25 20
#10 2 25 6
#11 3 25 2
#12 4 25 4
数据
df <- structure(list(Obs = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L,
3L, 4L), ID = c(24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 25L,
25L, 25L, 25L), Value = c(10L, 4L, 2L, 3L, 5L, 4L, 2L, 1L, 5L,
6L, 2L, 4L)), class = "data.frame", row.names = c(NA, -12L))
使用易于理解的ifelse
- baseR 方式
df$Value <- ifelse(df$Obs == 1, df$Value/ 0.25, df$Value)
或dplyr
方式
library(dplyr)
df %>% mutate(Value = ifelse(Obs == 1, Value/0.25, Value))
Obs ID Value
1 1 24 40
2 2 24 4
3 3 24 2
4 4 24 3
5 5 24 5
6 6 24 4
7 7 24 2
8 8 24 1
9 1 25 20
10 2 25 6
11 3 25 2
12 4 25 4
我正在尝试将每个特定 ID 的第一个观察值除以 0.25。
我该怎么做?
例如我想将 ID 24 的第一个观察值除以 0.25,这样值(当前为 10)将更改为 (10/0.25) = 40
代码应该对所有具有 'Obs = 1' 的 ID 执行相同的操作,例如ID“25”的第一次观察应该是 (5/0.25) = 20.
我的数据示例如下:
Obs ID Value
1 24 10
2 24 4
3 24 2
4 24 3
5 24 5
6 24 4
7 24 2
8 24 1
1 25 5
2 25 6
3 25 2
4 25 4
我该怎么做?
谢谢!
您可以将 Value
除以 0.25,其中 Obs = 1
。
inds <- df$Obs == 1
df$Value[inds] <- df$Value[inds]/0.25
df
# Obs ID Value
#1 1 24 40
#2 2 24 4
#3 3 24 2
#4 4 24 3
#5 5 24 5
#6 6 24 4
#7 7 24 2
#8 8 24 1
#9 1 25 20
#10 2 25 6
#11 3 25 2
#12 4 25 4
数据
df <- structure(list(Obs = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L,
3L, 4L), ID = c(24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 25L,
25L, 25L, 25L), Value = c(10L, 4L, 2L, 3L, 5L, 4L, 2L, 1L, 5L,
6L, 2L, 4L)), class = "data.frame", row.names = c(NA, -12L))
使用易于理解的ifelse
- baseR 方式
df$Value <- ifelse(df$Obs == 1, df$Value/ 0.25, df$Value)
或dplyr
方式
library(dplyr)
df %>% mutate(Value = ifelse(Obs == 1, Value/0.25, Value))
Obs ID Value
1 1 24 40
2 2 24 4
3 3 24 2
4 4 24 3
5 5 24 5
6 6 24 4
7 7 24 2
8 8 24 1
9 1 25 20
10 2 25 6
11 3 25 2
12 4 25 4