У меня есть набор данных (показанный ниже), и я написал набор кода R для выполнения 2 основных функций: дайте мне кратное изменение для каждого из моих методов лечения по всем параметрам; и дать мне значения p для всех обработок против контроля по всем параметрам. Это сгенерировало 2 тибля через функцию суммирования. Тиббл с изменением фальца 12х5, а тиббл р.значения 10х5.
Мне нужно сделать две вещи: 1. убрать два ряда из таблицы изменений сгиба, чтобы сделать ее 10x5 2. связать два элемента (теперь оба 10x5) вместе.
Я пытался отфильтровать свои 2 контрольные процедуры из таблицы изменений сгибов, а затем связал их вместе, но я продолжаю получать ошибки.
Вот данные, все они были усреднены.
chemistry rate Digital biomass[mm^3] greenness average[] Height [mm]
1 Control 0 135484.07 0.2167113 86.27765
2 Flavone 0.001 135090.45 0.2025817 81.21167
3 Flavone 0.01 144547.00 0.2078100 82.85367
4 Flavone 0.1 145807.70 0.2043300 84.96300
5 Flavone 1 110408.18 0.1949033 81.48700
6 Flavone 10 53585.55 0.1850100 69.78533
7 SA3F2 0.001 158966.67 0.2051417 85.33000
8 SA3F2 0.01 167762.00 0.2113683 88.58500
9 SA3F2 0.1 159897.50 0.2021017 86.60617
10 SA3F2 1 181713.50 0.1995667 85.57567
11 SA3F2 10 136530.00 0.1964467 81.84200
Вот код, который вычисляет изменение сгиба:
fold.change <- cleaned.averagedreps.nona %>%
group_by(chemistry) %>%
mutate_at(vars(3:5), ~./.[rate == '0'])
Вот код, который вычисляет значения p.values. Это делается в наборе данных, аналогичном показанному выше, но с повторениями, чтобы t.test мог вычислить.
#add colums for p values
#remove NA
cleaned.repdata.nona <- na.omit(cleaned.repdata)
#seperate control
control <- cleaned.repdata.nona %>%
filter(cleaned.repdata.nona$rate == "0")
#process p values
broad.pvalues <- cleaned.repdata.nona %>%
group_by(chemistry, rate) %>%
filter(chemistry != "Control") %>%
summarise("biomass.p" = t.test(`Digital biomass[mm^3]`, control$`Digital biomass[mm^3]`)$p.value,
"greenness.p" = t.test(`greenness average[]`, control$`greenness average[]`)$p.value,
"height.p" = t.test(`Height [mm]`, control$`Height [mm]`)$p.value)
Вот то, что я написал, чтобы соединить мои два куска и возникшие ошибки:
#make both dataframes the same size (i.e. remove control rows in fold change)
> fold.change <- filter_at(fold.change, all.vars(!(fold.change$rate == "Control")))
Error: `.predicate` has no matching columns
Call `rlang::last_error()` to see a backtrace
> final <- cbind(fold.change, broad.pvalues)
Error: Argument 2 must be length 12, not 10
Дайте мне знать, если у вас есть какие-либо решения. Я надеюсь превратить этот тиббл в df, чтобы он был менее привередлив и легче выводить.
Спасибо!