У меня возникла проблема с фильтрацией набора данных на основе значений, на которые ссылаются другие наборы данных.
У меня есть два набора данных. Первый набор данных, compare_dt, содержит все сравнения, которые я должен сделать, в виде строк с location1, location2. Второй набор данных, rain_values_dt, содержит значения, собранные из этих мест в разное время. Моя цель состоит в том, чтобы для каждой строки в compare_dt отфильтровать строки rain_values_dt, собранные из location1, отфильтровать строки rain_values_dt, собранные из location2, выполнить внутреннее соединение этих строк, запустить парный t-тест и вернуть статистику теста в добавленный столбец. для сравнения_dt.
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу фильтровать строки rain_values_dt на основе имени местоположения, на которое ссылается сравнение_dt. Запрос на фильтрацию на основе имени, хранящегося в первой строке таблицы сравнения, возвращает все строки rain_values_dt. Запрос на фильтрацию на основе имени, хранящегося в более высоких номерах строк, ничего не возвращает. Я хотел бы получать только строки с сайта, на который я ссылаюсь в фильтре.
library(data.table)
library(dplyr)
comparison_dt <- data.table(
location1= c('austin_tx','austin_tx','austin_tx','boston_ma','boston_ma','boston_ma','chicago_il','chicago_il','chicago_il'),
location2= c('austin_tx','boston_ma','chicago_il','austin_tx','boston_ma','chicago_il','austin_tx','boston_ma','chicago_il'),
test_statistic= c()
)
rain_values_dt <- data.table(
location=c('austin_tx','austin_tx','austin_tx','boston_ma','boston_ma','boston_ma','chicago_il','chicago_il','chicago_il'),
month=c('march','april','may','march','april','may','march','april','may'),
rainfall=c(1:9)
)
row_n=1
#my intended result, works as expected v
dplyr::filter(rain_values_dt, location == 'austin_tx')
#is pulling the correct name from the comparison table to filter on
comparison_dt[row_n,'location1']
#these are equivalent to each other, so I should be able to substitute, right?
'austin_tx' == comparison_dt[row_n,'location1']
#does not work, returns all values instead of filtering
dplyr::filter(rain_values_dt, location == comparison_dt[row_n,'location1'])
Это упрощение большого набора данных, в котором не все сравнения сайтов действительны, испытания должны сопоставляться на основе ряда различных условий, а количество испытаний на сайте нечетное.
Раньше это работало, как ожидалось. Я перезапустил сеанс R, и он больше не работает должным образом.
Я попытался изменить имена местоположений в любом наборе данных на символьный или функциональный тип, основываясь на идее, что я мог импортировать свои наборы данных по-другому. Я попытался сослаться на столбец местоположения как вектор или в кавычках. Я попытался выгрузить и перезагрузить dplyr и проверить, использует ли R версию фильтра базовой статистики или версию dplyr. Это кажется простой проблемой, но я искал этот сайт и документацию filter() и не нашел ответа, почему функция может вести себя таким образом.