繁体   English   中英

R:将 0 添加到 dataframe

[英]R: Add 0s to dataframe

如何在下面的 dataframe 中添加 1990 年的太阳能源数量为 0? 1990 年的太阳能目前没有任何价值。

数据:

资源 数量
1990 煤炭 19203
1990 2345
1991 煤炭 18490
1991 2398
1991 太阳的 123
1992 ... ...
... ... ...
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
  ...

我们可以使用completetidyr

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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM