r - 在R data.frame中,如何根据当前已有的变量添加新的变量
问题描述
有一个数据框'ori_data'(作为图像'灰色区域'),如何添加两个变量'final_price/final_price_from'?
1.'final_price'从'price1:price4'中检索第一个出现的数字
2.'final_price_from'是'final_price'来自哪个变量'price1:price4'的源标签
ori_data <- data.frame(category=c("a","b","c","d","e","f","g","h","i"),
price1=c(1,9,0,0,0,0,6,9,0),
price2=c(3,0,2,0,6,0,0,9,0),
price3=c(0,2,0,3,0,5,4,0,0),
price4=c(0,0,3,0,5,7,0,0,0))
解决方案
你可以试试
library(dplyr)
library(reshape2)
final_price <- ori_data %>%
melt(id.vars = "category") %>%
group_by(category) %>% arrange(category) %>%
slice(which.max(value > 0))
names(final_price)[2:3] <- c("final_price_from", "final_price")
ori_data %>%
left_join(final_price, by = "category") %>%
mutate(final_price = ifelse(final_price>0, final_price, "none"))
category price1 price2 price3 price4 final_price_from final_price
1 a 1 3 0 0 price1 1
2 b 9 0 2 0 price1 9
3 c 0 2 0 3 price2 2
4 d 0 0 3 0 price3 3
5 e 0 6 0 5 price2 6
6 f 0 0 5 7 price3 5
7 g 6 0 4 0 price1 6
8 h 9 9 0 0 price1 9
9 i 0 0 0 0 price1 none
推荐阅读
- iframe - 带有嵌套 I 帧的 Puppeteer-WaitForSelector()
- angular-material - How can I Integrate this code in .html file and .ts file?
- prolog - Prolog: How to convert hexadecimal value to integer in Prolog
- sql - 为什么我在更新级联上使用时出现错误?
- php - Is IonCube 7.2 backwards compatible with IonCube 5.6 PHP code?
- azure - 在使用 Azure 以太坊 PoA 解决方案模板设置的以太坊网络上获取初始以太币
- sql - 在 sql server 2008 中将列名和值转换为行名和行值
- javascript - Jquery: each button click, in the same class must to replace a content of div stored in vars depends on attr value
- c# - Get all Process handles in C#
- python - How do I patch object imported by another python file?