首页 > 解决方案 > R - 使用条件提取单元格值

问题描述

我正在尝试将我的数据框中的特定单元格值用作对象(以便稍后与变量中的其他值相乘,例如我想要 = 2019 的内容defyear。我不想通过使用行/列编号(大型数据集)进行索引来引用此值。


以下代码适用于我:

def2019 <- df %>%
  subset(year =="2019") %>%
  select(def)
def2019 <- def2019[1,1]
def2019 <- as.vector(def2019$def, mode='numeric') to enable multiplication later

但是:它不是很快而且也很hackish。这个问题有更通用/优雅的解决方案吗?


MRE:

df <- tribble(~year, ~value,~def,
              "2017", 1, 0.9,
              "2017", 2, 0.9,
              "2018", 3, 1,
              "2019", 4, 1.1,
              "2019", NA, 1.1,
              "2019", 6, 1.1,
              "2019", 9, 1.1)

标签: rdataframedplyrdata.table

解决方案


如果我们需要一个有效的选项,请使用data.table

library(data.table)
def2019 <- setDT(df, key = 'year')["2019", .(def = def[1])]$def

如果“年”列是integer班级

setDT(df, key = 'year')[.(2019), .(def = def[1])]$def

推荐阅读