我有一个数据集,其中包含关于正在运行(目前正在运行)或计划中的发电厂的信息(将在将来开放)。然而,在少数情况下,有一些发电厂处于“运行和计划”状态。这些发电厂已经存在,但将在某一特定日期扩大。我需要纠正这一点,将这个异常值的条目加倍,即当发电厂“运行和计划”时,我需要保持当前行(我将将该行重命名为可运行),并创建一个新的相同行来规划状态。<br />
简单地说,我需要做的是,当有一个“运行和计划的”发电厂时,我需要通过创建一个具有相同数据点的新行来将其分解为运行和计划。我不能用ifelse
做这件事。有人能给我建议一下吗?
Example<br />
Firm Status Production<br />
A Operating 1000<br />
B Planned 1030<br />
C Operating 1000<br />
D Operating & Planned 1000<br />
Output<br />
Firm Status Production<br />
A Operating 1000<br />
B Planned 1030<br />
C Operating 1000<br />
D Operating 1000<br />
D Planned 1000<br />
发布于 2022-03-11 10:20:36
你在找tidyr::separate_rows
library(tidyr)
separate_rows(df, Status, sep = " & ")
使用@Quinten的数据集:
df <- data.frame(Firm = c("A", "B", "C", "D"),
Status = c("Operating", "Planned", "Operating", "Operating & Planned"),
Production = c(1000, 1030, 1000, 1000))
df %>%
separate_rows(Status, sep = " & ")
# A tibble: 5 x 3
Firm Status Production
<chr> <chr> <dbl>
1 A Operating 1000
2 B Planned 1030
3 C Operating 1000
4 D Operating 1000
5 D Planned 1000
发布于 2022-03-11 10:20:42
您可以使用包splitstackshape
。您可以使用以下代码:
首先,你的数据:
df <- data.frame(Firm = c("A", "B", "C", "D"),
Status = c("Operating", "Planned", "Operating", " Operating & Planned"),
Production = c(1000, 1030, 1000, 1000))
输出:
Firm Status Production
1 A Operating 1000
2 B Planned 1030
3 C Operating 1000
4 D Operating & Planned 1000
接下来,使用此代码将行拆分为具有相同值的两行:
library(splitstackshape)
df2 <- cSplit(df, "Status", sep = "&", direction = "long")
df2
输出:
Firm Status Production
1: A Operating 1000
2: B Planned 1030
3: C Operating 1000
4: D Operating 1000
5: D Planned 1000
https://stackoverflow.com/questions/71436612
复制相似问题