[英]Assign value in column by group R
我有看起來像這樣的數據:
data <- data.frame(stringsAsFactors=FALSE,
id = c(1, 1, 2, 2, 3, 3, 3, 4),
rating = c("No rating", "Red", "No rating", "Red", "Green", "Red",
"No rating", "Green"),
pct = c(10.34079909, 89.65920091, 91.28335721, 8.71664279, 21, 83, 2,
10)
我正在嘗試創建一個名為flag
的新變量,以確定組id
何時滿足特定條件。 例如:
data %>%
group_by(id) %>%
mutate(flag = case_when(
pct > .05 & rating == "Red" ~ TRUE,
TRUE ~ FALSE))
一旦滿足標志條件,我希望flag
所有值對於該特定id
為TRUE
,而不僅僅是對於滿足該條件的行。
我不熟悉 dplyr,但如果我正確理解問題,這確實有效
data <- data.frame(stringsAsFactors=FALSE, id = c(1, 1, 2, 2, 3, 3, 3, 4), rating = c("No rating", "Red", "No rating", "Red", "Green", "Red", "No rating", "Green"), pct = c(10.34079909, 89.65920091, 91.28335721, 8.71664279, 21, 83, 2, 10))
data$bin <- ifelse(data$pct > .05 & data$rating == "Red", TRUE, FALSE)
df <- merge(data, aggregate(data=data, bin~id, max), by.x="id", by.y = "id")
head(df)
id rating pct bin.x bin.y
1 1 No rating 10.340799 FALSE 1
2 1 Red 89.659201 TRUE 1
3 2 No rating 91.283357 FALSE 1
4 2 Red 8.716643 TRUE 1
5 3 Green 21.000000 FALSE 1
6 3 Red 83.000000 TRUE 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.