假設我有一個與此類似的資料框,只有 1000 個觀察值:
df <- data.frame(Group = c('A', 'A', 'A', 'B', 'B',
'B','B','C','C','C','D','D','D','D','D'),
Values=c('5','7','9','0','8','4','5','2','1','3','6','3','1','3','5'))
我想要做的是根據資料框中已經存在的組中的值向資料框中添加一個新的計算組,而不替換原始組的值。例如,假設我想保留 D 組,但創建一個包含 D 組的所有值 2 的新組。
我想要的結果資料框的一個示例如下:
df <- data.frame(Group = c('A', 'A', 'A', 'B', 'B',
'B','B','C','C','C','D','D','D','D','D'
,'Dadjusted','Dadjusted','Dadjusted','Dadjusted','Dadjusted'),
Values=c('5','7','9','0','8','4','5','2','1','3','6','3','1','3','5',
'8','5','3','5','7'))
我嘗試過使用如下 ifelse 陳述句:
df$adjustedvalues<-ifelse(Group=='D', df$Values 2, df$Values)
但是這種方法會產生如下所示的資料框:
df <- data.frame(Group = c('A', 'A', 'A', 'B', 'B',
'B','B','C','C','C','D','D','D','D','D'),
Values=c('5','7','9','0','8','4','5','2','1','3','6','3','1','3','5')
adjustedvalues=c('5','7','9','0','8','4','5','2','1','3','8','5','3','5','7')
對于我的目的來說,這不太理想。
uj5u.com熱心網友回復:
這是一個可能的基本 R 選項:
rbind(df, data.frame(Group = "Dadjusted",
Values = as.integer(df$Values)[df$Group == "D"] 2))
輸出
Group Values
1 A 5
2 A 7
3 A 9
4 B 0
5 B 8
6 B 4
7 B 5
8 C 2
9 C 1
10 C 3
11 D 6
12 D 3
13 D 1
14 D 3
15 D 5
16 Dadjusted 8
17 Dadjusted 5
18 Dadjusted 3
19 Dadjusted 5
20 Dadjusted 7
uj5u.com熱心網友回復:
你可以使用bind_rows
library(tidyverse)
df %>%
bind_rows(df %>%
filter(Group == "D") %>%
mutate(Values = as.character(as.numeric(Values) 2),
Group = "Dadjusted"))
#> Group Values
#> 1 A 5
#> 2 A 7
#> 3 A 9
#> 4 B 0
#> 5 B 8
#> 6 B 4
#> 7 B 5
#> 8 C 2
#> 9 C 1
#> 10 C 3
#> 11 D 6
#> 12 D 3
#> 13 D 1
#> 14 D 3
#> 15 D 5
#> 16 Dadjusted 8
#> 17 Dadjusted 5
#> 18 Dadjusted 3
#> 19 Dadjusted 5
#> 20 Dadjusted 7
由reprex 包于 2022-04-26 創建(v2.0.1)
uj5u.com熱心網友回復:
更新:
也是一個dplyr類似于@Allan Cameron 的解決方案,但沒有那么優雅:
library(dplyr)
df %>%
type.convert(as.is=TRUE) %>%
filter(Group=="D") %>%
mutate(Group = "Dadjusted",
Values = Values 2) %>%
bind_rows(df %>%
type.convert(as.is = TRUE)) %>%
arrange(Group)
Group Values
1 A 5
2 A 7
3 A 9
4 B 0
5 B 8
6 B 4
7 B 5
8 C 2
9 C 1
10 C 3
11 D 6
12 D 3
13 D 1
14 D 3
15 D 5
16 Dadjusted 8
17 Dadjusted 5
18 Dadjusted 3
19 Dadjusted 5
20 Dadjusted 7
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/465338.html
