【发布时间】:2023-03-19 07:06:01
【问题描述】:
我正在尝试将一个数据框中的唯一值粘贴到单独数据框中新创建的列中。该功能需要满足多个条件。在这种情况下,两个数据框中的“日期”和“产品”值必须相同。
我已经尝试过 for、if 和 while 函数,但我似乎无法解决问题。
sales1 <- data.frame("Day" = c(01,02,03,04), "Product" = c("B","A","D","C"), "salesVol" = c(12,31,3,90))
sales2 <- data.frame("Day" = c(01,01,01,01,02,02,02,02,03,03,03,03,04,04,04,04), "Product" = c("A","B","C","D","A","B","C","D","A","B","C","D","A","B","C","D"), "Price" = c(9,3,4,5,7,10,5,8,4,5,11,3,12,4,7,6))
for (i in 1:nrow(sales1)){
if (sales1$Product == sales2$Product
&& sales1$Day == sales2$Day)
{
sales1$dailyPrice[i] <- sales2$Price[i]
}
}
请注意,sales2 中只能有一个唯一的日期/产品组合。
也试过了:
while (sales1$Product == sales2$Product
&& sales1$Day == sales2$Day){
sales1$dailyPrice <- sales2$Price
}
生成的 sales1 数据框应该是:
Day Product salesVol dailyPrice
1 B 12 3
2 A 31 7
3 D 3 3
4 C 90 7
即当第 2 天且产品为“A”时,根据 sales2,“dailyPrice”为 7。
但充其量我得到的值不正确,最坏的情况是(上面的代码)没有任何东西被粘贴。也没有错误信息。谢谢。
【问题讨论】:
标签: r dataframe if-statement