dplyr :: mutate показывает одинаковый результат для каждой строки - PullRequest
1 голос
/ 12 апреля 2020

Когда я печатаю b, он не печатает с правильными значениями, любая помощь будет оценена.

df <- data.frame(
  "Values" = c("Gender","Gender","Marital Status","Marital Status","Age","Age"),
  "Mean"= c(0.6934877,  0.8536885,  0.8801737,  0.8998975, 54.6858177, 54.1486680),
  "By"= c("Urban", "Rural", "Urban","Rural","Urban", "Rural")
) 
a <- as.data.frame(df %>% 
     spread(By, Mean)%>%
     dplyr::group_by(Values))
a[2] 
b <- a %>%
  dplyr::mutate(Max = max(a[2], a[3]),
                Min = min(a[2], a[3]),
                Diff = Max / Min - 1) %>% 
  dplyr::arrange(desc(Diff)) %>%
  dplyr::filter(Diff > .2)

b

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Мы также можем сделать это в data.table

library(data.table)
setDT(a)[, Diff := (Rural /Urban) - 1)[order(Diff)]
1 голос
/ 12 апреля 2020

Вы не описали, что вы пытаетесь сделать или какие правильные значения, но, вероятно, вы ищете это:

library(dplyr)

a %>%
  mutate(Diff = (Rural / Urban) - 1) %>% 
  arrange(desc(Diff))

#          Values Rural Urban    Diff
#1         Gender  0.85  0.69  0.2310
#2 Marital Status  0.90  0.88  0.0224
#3            Age 54.15 54.69 -0.0098

, а затем используйте filter, если необходимо:

filter(Diff > .2)
...