#r #dataframe #data-analysis
#r #фрейм данных #анализ данных
Вопрос:
В настоящее время я работаю над проектом анализа данных, но проблема в том, что новый фрейм данных, который я создал, странный.
mycob1 <- read.csv("MYCOB_1.csv")
mycob1
Date Direction RFU Ct
1 Lot_210927 0 6.3588 9.164329
2 Lot_210927 0 5.0394 11.350701
3 Lot_210927 0 4.9946 37.334669
4 Lot_210927 0 4.8604 8.168337
5 Lot_210927 0 4.9032 37.306613
6 Lot_210927 0 4.9502 22.176353
7 Lot_210927 0 4.7858 23.713427
8 Lot_210927 0 5.2778 10.496994
9 Lot_210927 1 1021.8458 32.119668
10 Lot_210927 1 1020.1998 31.500716
11 Lot_210927 1 1065.8000 31.979674
12 Lot_210927 1 988.0452 31.019754
13 Lot_210927 1 1085.2206 31.557973
14 Lot_210927 1 1072.8540 31.745491
15 Lot_210927 1 1020.6496 31.218151
16 Lot_210927 1 983.4106 31.981162
mycob2 <- read.csv("MYCOB_2.csv")
mycob2
Date Direction RFU Ct
1 Lot_211020 0 0.6876 47.72087
2 Lot_211020 0 40.1056 38.37418
3 Lot_211020 0 97.0882 37.72917
4 Lot_211020 0 10.3170 36.18236
5 Lot_211020 0 67.3742 37.39050
6 Lot_211020 0 10.2540 40.16776
7 Lot_211020 0 6.9624 28.07575
8 Lot_211020 0 9.5718 28.84626
9 Lot_211020 0 13.0306 38.87375
10 Lot_211020 1 860.3956 29.15746
11 Lot_211020 1 884.9338 30.03665
12 Lot_211020 1 1552.2462 27.90839
13 Lot_211020 1 738.2328 29.22760
14 Lot_211020 1 1419.6448 29.13627
15 Lot_211020 1 1441.6212 29.35351
16 Lot_211020 1 424.9774 31.56446
mycob12 <- cbind(mycob1, mycob2, by.x = "Lot_210927", by.y = "Lot_211020")
mycob12
Date Direction RFU Ct Date Direction RFU Ct by.x by.y
1 Lot_210927 0 6.3588 9.164329 Lot_211020 0 0.6876 47.72087 Lot_210927 Lot_211020
2 Lot_210927 0 5.0394 11.350701 Lot_211020 0 40.1056 38.37418 Lot_210927 Lot_211020
3 Lot_210927 0 4.9946 37.334669 Lot_211020 0 97.0882 37.72917 Lot_210927 Lot_211020
4 Lot_210927 0 4.8604 8.168337 Lot_211020 0 10.3170 36.18236 Lot_210927 Lot_211020
5 Lot_210927 0 4.9032 37.306613 Lot_211020 0 67.3742 37.39050 Lot_210927 Lot_211020
6 Lot_210927 0 4.9502 22.176353 Lot_211020 0 10.2540 40.16776 Lot_210927 Lot_211020
7 Lot_210927 0 4.7858 23.713427 Lot_211020 0 6.9624 28.07575 Lot_210927 Lot_211020
8 Lot_210927 0 5.2778 10.496994 Lot_211020 0 9.5718 28.84626 Lot_210927 Lot_211020
9 Lot_210927 1 1021.8458 32.119668 Lot_211020 0 13.0306 38.87375 Lot_210927 Lot_211020
10 Lot_210927 1 1020.1998 31.500716 Lot_211020 1 860.3956 29.15746 Lot_210927 Lot_211020
11 Lot_210927 1 1065.8000 31.979674 Lot_211020 1 884.9338 30.03665 Lot_210927 Lot_211020
12 Lot_210927 1 988.0452 31.019754 Lot_211020 1 1552.2462 27.90839 Lot_210927 Lot_211020
13 Lot_210927 1 1085.2206 31.557973 Lot_211020 1 738.2328 29.22760 Lot_210927 Lot_211020
14 Lot_210927 1 1072.8540 31.745491 Lot_211020 1 1419.6448 29.13627 Lot_210927 Lot_211020
15 Lot_210927 1 1020.6496 31.218151 Lot_211020 1 1441.6212 29.35351 Lot_210927 Lot_211020
16 Lot_210927 1 983.4106 31.981162 Lot_211020 1 424.9774 31.56446 Lot_210927 Lot_211020
Для пояснения, «Направление» просто указывает, является ли образец положительным или отрицательным. Я хочу выяснить, существует ли корреляция между переменными RFU и Ct и Direction. Но, похоже, я не могу придумать, как это сделать. Странная часть этого нового фрейма данных, который я создал под названием «mycob12», заключается в том, что он создает две новые переменные в конце с именами «by.x» и «by.y», и я не уверен, что я могу сделать, чтобы удалить их. Есть ли способ удалить переменные?
редактировать: я хотел бы использовать эти фреймы данных и создавать с ними графики для изучения любых шаблонов с direction, RFU и Ct. Я думал об удалении даты и просто наложении нескольких фреймов данных друг на друга.
Спасибо!
Комментарии:
1. Вам нужно использовать
merge
, а неcbind
. (cbind
не имеет аргументовby
,by.x
, илиby.y
, поэтому они воспринимаются какc
ссылкиbind
на другие.)2. Кроме того,
by*
аргументам нужны имена столбцов, а не значения.3. На самом деле, я больше не уверен
merge
. Я думаю, вам нужно вручную создать фрейм, который вы ожидаете от этой операции.4. Или, может
rbind
быть? Было бы очень полезно, если бы вы показали небольшой пример (скажем, 3 строки из каждого фрейма данных), а затем также показали, каким вы хотите получить результат. Если вы хотите, чтобы два фрейма данных находились рядом в одном фрейме данных,cbind(mycob1, mycob2)
. Если вы хотите, чтобы они располагались друг над другом в одном фрейме данных,rbind(mycob1, mycob2)
. Если вы хотите что-то еще, пожалуйста, сообщите нам, что это такое.5. Спасибо за помощь. Я согласен с вами @r2evans. Я пытался использовать merge a перед cbind, и это доставило мне много проблем.
Ответ №1:
Я не уверен, что именно вы пытаетесь сделать, но, глядя на ваши данные, кажется, имеет смысл просто сложить оба фрейма данных, а затем отсортировать их Date
с помощью переменной.
Следуя вашим фреймам данных выше:
df1 <- data.frame(Date = c("Lot_210927","Lot_210927","Lot_210927"),
Direction = c(0,0,0),
RFU = c(6.3588,5.0394,4.9946),
Ct = c(9.164329,11.350701,37.334669))
df2 <- data.frame(Date = c("Lot_211020","Lot_211020","Lot_211020"),
Direction = c(0,0,0),
RFU = c(0.6876,40.1056,97.0882),
Ct = c(47.72087,38.37418,37.72917))
Вы можете сложить их с помощью tidyverse, используя bind_rows
: (обратите внимание, что он просто наложит оба фрейма данных. Я бы рекомендовал использовать это только в том случае, если у вас одинаковые имена столбцов и типы данных — например, числовые, символьные и т. Д. — В обоих фреймах данных, Иначе вам следует использовать что-то вроде left_join
из tidyverse
)
library(tidyverse)
df_merged <- bind_rows(df1,df2)
df_merged
Date Direction RFU Ct
1 Lot_210927 0 6.3588 9.164329
2 Lot_210927 0 5.0394 11.350701
3 Lot_210927 0 4.9946 37.334669
4 Lot_211020 0 0.6876 47.720870
5 Lot_211020 0 40.1056 38.374180
6 Lot_211020 0 97.0882 37.729170
Затем вы могли бы создать корреляционную матрицу следующим образом:
df_num <- df_merged[, c(2:4)]
df_cor <- round(cor(df_num),2)
df_cor %>%
head()
Direction RFU Ct
Direction 1 NA NA
RFU NA 1.00 0.29
Ct NA 0.29 1.00
Просто изолируем числовые переменные и строим с ними корреляционную матрицу. Очевидно, что это не очень интересно с 6 точками данных и направлением, всегда равным 0, но с вашим полным набором данных это должно быть хорошей отправной точкой.
Комментарии:
1. Особенно для новых пользователей я бы рекомендовал не использовать слово join для обозначения того, что
rbind
делает. стек — лучший термин. Сохраните соединение дляmerge()
*_join
операций /, где сопоставление происходит на основе значений столбцов.2. Конечно, это справедливо, я отредактирую свой пост.
3. Спасибо @James! Это спасло мне жизнь. Я надеюсь, что в моем посте редактирования все было более понятно?
4. Рад, что это помогло @Dlun! Было бы удивительно, если бы вы могли принять мой ответ 🙂