socialsec
411223
420211
420604
430404
431030
440127
910415
950110
740505
910101
这是瑞典社会安全号码的数字列,格式为yymmdd我想找到他们的中位数年份。 ( 如果那个人的年龄高于中位年龄,我想创建一个新栏目,这个人是“老”。我想把新栏目称为“年龄” 对于年龄小于中位年龄的人来说也是如此。在同一栏“年龄”中,他们表现为“年轻” 这当然是一个非常基本的问题,但我不是R的经验丰富的用户。
答案 0 :(得分:3)
如果您的初始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))
答案 1 :(得分:2)
你也可以这样做(&#39; df&#39;来自@Colonel Beauvel&#39;)
df$age <- with(df, c('young', 'old')[(socialsec > median(socialsec))+1L])