#r
#r
Вопрос:
Я хотел бы узнать, во сколько раз «Значение» выше для «Округа» (например, округа 1), когда «Округ» имеет значение FALSE. Вот мои данные. «Округ» всегда является дубликатом, поскольку он имеет как TRUE, так и FALSE .
data <- data.frame( "County" = c(1,1,2,2,3,3,4,4,5,5), "Value" = c(10,20,7,15,40,32,43,13,12,16), "ID" = c("FALSE", "TRUE","FALSE","TRUE","FALSE", "TRUE","FALSE", "TRUE","FALSE","TRUE"))
Я пытался добавить новый столбец, но я думаю, что это неправильный способ сделать это. Я просто хочу знать, сколько раз округ 1 (когда он имеет значение False) имеет более высокое значение, чем округ 1 (когда он имеет значение TRUE).
Предыстория всего этого заключается в том, что я хотел бы знать, даст ли это мне более высокую дисперсию (в данном случае более высокое значение), чем когда округ имеет значение true.
Есть мысли?
Комментарии:
1. Я не понимаю, чего вы хотите. Не могли бы вы уточнить свое последнее предложение
whether the value is higher than TRUE for each "County"
и, возможно, добавить желаемый результат.2. Пожалуйста, уточните свой вопрос. Я не понимаю, какова ваша цель.
3. Теперь я обновил свой пост! Спасибо за информацию!
Ответ №1:
Возможно, эта data.table
опция может помочь
> setDT(data)[, .SD[Value[ID == "FALSE"] == max(Value)], County]
County Value ID
1: 3 40 FALSE
2: 3 32 TRUE
3: 4 43 FALSE
4: 4 13 TRUE
или
> setDT(data)[, NewCol := (Value[ID == "FALSE"] == max(Value)), County][]
County Value ID NewCol
1: 1 10 FALSE 0
2: 1 20 TRUE 0
3: 2 7 FALSE 0
4: 2 15 TRUE 0
5: 3 40 FALSE 1
6: 3 32 TRUE 1
7: 4 43 FALSE 1
8: 4 13 TRUE 1
9: 5 12 FALSE 0
10: 5 16 TRUE 0
Ответ №2:
Используя dplyr
library(dplyr)
data %>%
group_by(County) %>%
filter(Value[!as.logical(ID)] == max(Value))
Ответ №3:
Возможно, так:
data %>% arrange( ID ) %>% group_by(County) %>% summarize( FalseHigher = diff(Value) <= 0 )
Вы можете изменить имя с FalseHigher на Difference, если хотите.
Комментарии:
1. Обратите внимание, что в другом месте вам нужно будет гарантировать, что для каждого округа есть только две строки, и присутствуют как TRUE, так и FALSE.
2. Отлично!! Это было именно то, что я искал! Большое спасибо!