簡體   English   中英

按組 R 在列中分配值

[英]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所有值對於該特定idTRUE ,而不僅僅是對於滿足該條件的行。

我不熟悉 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM