r - 我应该如何有效地按值标记数据框的行?
问题描述
我有一个旅行数据框,其中有一列显示旅行是如何进行的,类似于下面的“a”列。
我的目标是根据列“a”的值向每一行添加一个新的数据列。
下面的函数有效,但似乎是完成一个相当简单的目标的过于复杂的方法。
new_var <- 0
似乎可能会导致错误。
如果我不附加数据框并以这种方式调用列,则该函数不起作用,这显然不是很好。
有没有明显更好的方法来做到这一点?
a <- c("On the Subway", "On a train", "Driving","On the Subway", "On a train", "Driving","On the Subway", "On a train", "Driving")
b <- c(1,15,3,54,5,32,7,76,9)
my_dataframe <- data.frame(a,b)
new_var <- 0
carbon_func <- function(variable){
new_var[variable == 'On the subway'] <- 0.014
new_var[variable == 'On a train'] <- 0.014
new_var[variable == 'On a bus'] <- 0.068
new_var[variable == 'Motorcycling'] <- 0.072
new_var[variable == 'Driving'] <- 0.12
new_var[variable == 'In a taxi or rideshare'] <- 0.12
new_var[variable == 'Flying'] <- 0.285
new_var[variable == 'Cycling'] <- 0
new_var[variable == 'Walking'] <- 0
return(new_var)
}
attach(my_dataframe)
my_dataframe$Carbon_Footprint <- carbon_func(a)
detach(my_dataframe)
我已经探索过使用像下面这样的字典类型的东西,但还没有找到可以替代所发布内容的方法
standardized_footprints <- c(0.014, 0.014, 0.068, 0.072, 0.12, 0.12, 0.285)
names(standardized_footprints) <- c('On the subway', 'On a train', 'On a bus', 'Motorcycling', 'Driving', 'In a taxi or rideshare', 'Flying')
谢谢!
解决方案
使用命名向量,我们可以匹配列以获取值
my_dataframe$Carbon_Footprint <- standardized_footprints[as.character(my_dataframe$a)]
my_dataframe$Carbon_Footprint
#[1] 0.014 0.014 0.120 0.014 0.014 0.120 0.014 0.014 0.120
但是,需要注意的一件事是名称应该与列值匹配以进行精确匹配。如果我们有条目On the subway
并且实际值为On the Subway
,则不匹配。
数据
standardized_footprints <- c(0.014, 0.014, 0.068, 0.072, 0.12, 0.12, 0.285)
names(standardized_footprints) <- c('On the Subway', 'On a train',
'On a bus', 'Motorcycling', 'Driving', 'In a taxi or rideshare', 'Flying')
推荐阅读
- javascript - 使用具有多个索引的数组填充表
- sql-server - 为什么触发器在sql中的查询后进行不必要的减法?
- javascript - 单击反应传单 v.3.x 中的标记时如何动态更改地图缩放?
- javascript - 如何组合 2 个 Jquery 插件代码?
- google-app-engine - Google Cloud App Engine Flexbile 配额错误
- azure - 如何在 azure cli 中使用逻辑和
- python - 有没有办法在 python 中从麦克风获取输入时检测暂停?
- apache-spark - 如何在 PySpark 的 Pandas 中使用 iloc 获得相同的结果?
- html - fullpage.js 无法滚动
- javascript - Chart.js 堆叠条形图迭代数据集