问题描述
我当前的数据大致具有以下模式:
Tree Fertilized Region Fruits
apple lightly sunny 100
apple lightly dark 50
apple heavily sunny 300
apple heavily dark 200
pear lightly sunny 150
pear lightly dark 200
pear heavily sunny 300
pear heavily dark 150
在这里,我想计算(作为较大函数的一部分)在施肥量和树类型的每种组合中,将树放置在阳光充足的地方而不是黑暗处的倍数变化(例如2倍变化)轻度受精的苹果树):
df%<>%
group_by(Tree,Fertilized) %>%
summarise(!!paste0("fold_change_",quote(Fruits)) := .[Region == "sunny","Fruits"]/.[type == "dark","Fruits"])
但是,我收到一条错误消息,说“水果”列不存在。有人对如何使它起作用有建议吗?我猜该解决方案是一些小的语法调整,但我似乎无法自己或在线找到它。
实际的数据集具有更多的树类型和参数,例如“水果”,因此我选择了管道结构和列的动态标签(“ !! paste0()”,“:=“),这可能是相关的或不相关的解决这个问题。
在此先感谢任何尝试提供帮助的人!
干杯,罗布
解决方法
我将使用分组操作:
pyinstaller --onefile 'my_python_file.py'
data.table
library(data.table)
library(dplyr)
f <- tempfile()
writeLines("
Tree,Fertilized,Region,Fruits,apple,lightly,sunny,100,dark,50,heavily,300,200,pear,150,150
",f)
dat <- read.csv(f)
tidyverse
dat <- data.table(dat)
dat[order(Region),.(fold_change = Fruits[2] / Fruits[1]),by=.(Tree,Fertilized)]
#> Tree Fertilized fold_change
#> 1: apple lightly 2.00
#> 2: apple heavily 1.50
#> 3: pear lightly 0.75
#> 4: pear heavily 2.00