r - R - 使用条件提取单元格值
问题描述
我正在尝试将我的数据框中的特定单元格值用作对象(以便稍后与变量中的其他值相乘,例如我想要 = 2019 的内容def
)year
。我不想通过使用行/列编号(大型数据集)进行索引来引用此值。
以下代码适用于我:
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)
解决方案
如果我们需要一个有效的选项,请使用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
推荐阅读
- javascript - 我怎样才能使我的 var 更改为与下拉菜单中的值相同的值?
- python - For 循环中的 if 语句 - 逻辑错误
- c# - 使用 `IPAddress.Any` 时应该注意什么?
- javascript - JavaScript 同时映射和查找:findMap?
- cmd - Windows 命令行 gulp 错误代码 800A03EE Microsoft JScript 编译错误
- r - 我正在编写一个函数来查找从 2 到数字“n”的素数列表
- excel - 有没有办法在不知道 VBA Excel 中哪个工作表的情况下访问命名范围?
- terraform - terraform 模块,在开始之前等待另一个模块完成
- json - Npgsql 传递的 JSON 字符串的最大大小是多少?
- java - 我该如何解决这个错误:包 android.support.design.widget 不存在?