我有一個相當大的資料集,我需要根據幾個條件聚合一些行。但首先我必須更改其中一個變數的值;日期變數。
下面是一個例子:
df <- data.frame(
Date=c("2021-01-07", "2021-01-10", "2021-01-07", "2021-01-06", "2021-01-06"),
Specie=c("cod", "cod", "cod", "cod", "haddock"),
Size=c("small", "small", "medium", "small", "medium"),
category=c("A", "B", "A", "A", "A"),
Value=c(500, 50, 600, 750, 700)
)
> df
Date Specie Size Value category
1 2021-01-07 cod small 500 A
2 2021-01-10 cod small 50 B
3 2021-01-07 cod medium 600 A
4 2021-01-06 cod small 750 A
5 2021-01-06 haddock medium 700 A
當“類別”==B 時,我需要將“日期”變數的值更改為與“類別”==A 中相同的日期,當“物種”和“大小”中的值在兩行中相等時. 在上面的示例資料中,我想更改第 2 行中的日期,使其與第 1 行中的日期相同,如下所示:
> df
Date Specie Size Value category
1 2021-01-07 cod small 500 A
2 2021-01-07 cod small 50 B
3 2021-01-07 cod medium 600 A
4 2021-01-06 cod small 750 A
5 2021-01-06 haddock medium 700 A
現在,在第 1 行和第 2 行中,只有“值”和“類別”不同。
我不知道如何解決這個問題,所以我將非常感謝您的建議!
uj5u.com熱心網友回復:
使用dplyr你可以做
library(dplyr)
df %>%
group_by(Specie, Size) %>%
mutate(Date = if_else(category=="B", first(Date[category=="A"]), Date))
這進行了分組,然后使用 aifelse將 B 類日期更改為 A 類中的第一個日期(首先只是幫助以防組中有多個 A 類日期)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496099.html
