【问题标题】:Create column which tells source of number between the first two columns创建列,告诉前两列之间的数字来源
【发布时间】:2021-01-05 19:28:10
【问题描述】:

我有一个包含三列的数据框:

df <- structure(list(lowage = c(45, 15, 9, 51, 22, 45, 4, 4, 9, 25), 
    highage = c(50, 21, 14, 60, 24, 50, 8, 8, 14, 30)), .Names = c("lowage", 
"highage"), row.names = c(NA, 10L), class = "data.frame")

df$random_number <- apply(df, 1, function(x) sample(seq(x[1], x[2]), 1))

我想创建第四列,告诉我们random_number 的来源。因此,例如,在第一行中,列lowage = 45 和highage = 46。比如说,生成的随机数是46(例如)。我想创建第四列,因为它来自 highage 列,所以它显示为标签“highage”。等等……

如果解决方案可以在dplyr 中,那就太好了!

【问题讨论】:

  • 当您使用seq(x[1], x[2]) 时,您正在从lowagehighage 之间的序列中采样。你的意思是c

标签: r if-statement dplyr


【解决方案1】:

这是你想要的吗?

df %>% 
  mutate(newcol = 
           case_when(random_number == lowage ~ "lowage", 
                     random_number == highage ~ "highage", 
                     TRUE ~ "between"))

#    lowage highage random_number  newcol
# 1      45      50            47 between
# 2      15      21            18 between
# 3       9      14            13 between
# 4      51      60            57 between
# 5      22      24            23 between
# 6      45      50            49 between
# 7       4       8             4  lowage
# 8       4       8             6 between
# 9       9      14             9  lowage
# 10     25      30            27 between

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多