【问题标题】:find median in R [closed]在R中找到中位数
【发布时间】:2015-03-24 10:39:19
【问题描述】:
socialsec  
411223  
420211   
420604
430404 
431030
440127
910415
950110
740505
910101

这是瑞典社会安全号码的数字列,格式为 yymmdd 我想找到他们的中位数年份。 ( 如果这个人高于中位年龄,我想创建一个新列,如果这个人是“老”。我想将新列称为“年龄” 对于年龄小于中位数的人来说也是如此。在同一栏“年龄”中,他们代表“年轻” 这当然是一个非常基本的问题,但我不是 R 的经验丰富的用户。

【问题讨论】:

    标签: r median


    【解决方案1】:

    如果你的初始data.frame是df

    df$socialsec = as.Date(paste0('19',as.character(df$socialsec)), format='%Y%m%d')
    df$age = ifelse(df$socialsec < median(df$socialsec), 'old', 'young')
    

    地点:

    df = structure(list(socialsec = c(411223L, 420211L, 420604L, 430404L, 
    431030L, 440127L, 910415L, 950110L, 740505L, 910101L)), .Names = "socialsec",     
    class = "data.frame", row.names = c(NA, -10L))
    

    【讨论】:

    • 按照我的理解,我猜前两个数字可能是出生年份,1941 年出生的人比 1995 年出生的人大......(@akrun 的解决方案同样如此)
    • 没错,代码中有一些提示。我还格式化了日期以使其清楚!
    • 这样看起来(方式)更好(和逻辑);-)
    【解决方案2】:

    您也可以这样做(@Colonel Beauvel 帖子中的“df”)

    df$age <- with(df, c('young', 'old')[(socialsec > median(socialsec))+1L])
    

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      相关资源
      最近更新 更多