Коэффициент корреляции для двух столбцов в кадре данных на основе группы в R - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь найти коэффициент корреляции (я думаю, что это правильный термин, не очень хороший для статистики) между двумя столбцами в моем фрейме данных на основе уникальных значений другого столбца.Я не уверен, использую ли я правильную функцию или нет.Я хочу, чтобы следующий номер выделен желтым цветом ниже.Кажется, я не могу получить то, что ищу.Буду признателен за любую помощь.

enter image description here

Пример данных:

test_df<-structure(list(stdate = c("2015-06-25", "2015-06-25", "2015-06-29", 
"2015-06-29", "2008-05-05", "2008-05-05", "2015-06-30", "2015-06-30", 
"2015-06-30", "2017-11-15", "2017-11-15", "2017-11-13", "2017-11-13", 
"2015-08-31", "2015-08-31", "2008-05-01", "2008-05-01", "2017-02-14", 
"2017-02-14", "2017-02-13"), sttime = c("10:30:00", "10:30:00", 
"09:45:00", "09:45:00", "11:50:00", "11:50:00", "10:45:00", "10:45:00", 
"09:00:00", "09:50:00", "09:50:00", "09:10:00", "09:10:00", "13:50:00", 
"13:50:00", "09:30:00", "09:30:00", "10:30:00", "10:30:00", "08:30:00"
), locid = c("USGS-01388500", "USGS-01388500", "USGS-01464585", 
"USGS-01464585", "USGS-01464515", "USGS-01464515", "USGS-01407330", 
"USGS-01407330", "USGS-01466500", "USGS-01387500", "USGS-01387500", 
"USGS-01395000", "USGS-01395000", "USGS-01400860", "USGS-01400860", 
"USGS-01377000", "USGS-01377000", "USGS-01367625", "USGS-01367625", 
"USGS-01398000"), Specific_conductance = c(525, 525, 184, 184, 
226, 226, 203, 203, 41, 674, 674, 466, 466, 312, 312, 540, 540, 
844, 844, 683), tds = c(294, 275, 119, 100, 155, 116, 155, 115, 
43, 403, 382, 286, 274, 177, 173, 328, 277, 435, 440, 347)), .Names = c("stdate", 
"sttime", "locid", "Specific_conductance", "tds"), row.names = c(NA, 
20L), class = "data.frame")

Код:

correlation_df<-test_df%>%
       group_by(locid)%>%
       summarise(correl=cor(tds,Specific_conductance))

Когда я запускаю это, я получаю 1 к 1 фрейм данных с NA .. Я хочу значение для каждого locid

1 Ответ

0 голосов
/ 12 октября 2018

Вы пытались запустить этот код со своими полными данными?В вашем test_df у вас есть только две записи для каждого locid, поэтому он пытается соотнести два числа (которые всегда дают NA).Если я создаю фиктивный фрейм данных с большим количеством данных, он работает нормально:

test_df <- tibble(locid = rep(c("a", "b", "c", "d"), 100), tds = rnorm(400), 
Specific_conductance = rnorm(400))

correlation_df <- test_df%>%
  group_by(locid)%>%
  summarise(correl = cor(tds,Specific_conductance))
correlation_df
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...