gpt4 book ai didi

R:向数据帧添加 0

转载 作者:行者123 更新时间:2023-12-02 18:55:47 26 4
gpt4 key购买 nike

如何将 1990 年太阳能源的 0 金额添加到下面的数据框中? 1990 年的太阳能目前没有任何值(value)。

数据:

<表类=“s-表”><标题>年来源金额 <正文>1990煤炭192031990核23451991煤炭184901991核23981991太阳能1231992...............2019......

代码:

data <- read.csv('annual_generation.csv')
data$source <- as.factor(data$source)

这不起作用,但这是总体思路:

for(i in 1990:2019) {
for (j in data$source) {
if (!data[i][j])
data[i][j] = 0
}
}

编辑:根据下面的答案,这是最终的解决方案:

data <- complete(data, YEAR, STATE, ENERGY.SOURCE,
fill = list(
GEN = 0,
TYPE.OF.PRODUCER = 'Total Electric Power Industry'))
     YEAR STATE ENERGY.SOURCE TYPE.OF.PRODUCER                  GEN
<int><fct> <fct> <fct> <dbl>
1 1990 IL Coal Total Electric Power Industry 54966018
...

最佳答案

我们可以使用 tidyr 中的 complete

library(tidyr)
complete(data, year, source, fill = list(amount = 0))

-输出

# A tibble: 6 x 3
# year source amount
# <int> <chr> <dbl>
#1 1990 coal 19203
#2 1990 nuclear 2345
#3 1990 solar 0
#4 1991 coal 18490
#5 1991 nuclear 2398
#6 1991 solar 123

另外,如果有一些“年份”缺失的话。我们可以使用一个范围

complete(data, year = 1990:2019, source, fill = list(amount = 0))

数据

data <- structure(list(year = c(1990L, 1990L, 1991L, 1991L, 1991L), 
source = c("coal",
"nuclear", "coal", "nuclear", "solar"), amount = c(19203L, 2345L,
18490L, 2398L, 123L)), class = "data.frame", row.names = c(NA,
-5L))

关于R:向数据帧添加 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66199069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com