将列值汇总为 R 中的 0 或 1 位数字
Rollup column values to 0 or 1 digits in R
我有一个包含 3 列和 27,000 个观察值的 table。如果没有可用的一位 phecode,我想将 phecode 汇总到一位或 0 位。我怎样才能在 R 中做到这一点?我在下面有一个我想做的例子。
table
的一部分
ICD Flag Phecode
008.45 9 008
008.45 9 008.5
008.45 9 008.52
008.46 9 008
008.46 9 008.5
008.47 9 008
008.47 9 008.5
期望的输出
ICD Flag Phecode
008.45 9 008
008.45 9 008
008.45 9 008.5
008.46 9 008
008.46 9 008
008.47 9 008
008.47 9 008
提前致谢!
看起来你想要
- 如果小数点后有两位数,则将 Phecode 舍入到十分之一,否则截断为整数
- 保持前导零
# Sample data
Phecode <- c(008, 008.5, 008.52)
# nchar will read number with no decimal and leading zeros as "1", with decimal and tenth digit only as 3. If two numerals after decimal will be nchar >3 and round to tenth. Paste0 will add leading zeros.
paste0("00", ifelse(nchar(Phecode) > 3, round(Phecode, 1), round(Phecode,0)))
给出:
"008" "008" "008.5"
您可以强制转换为数字或添加到 df 为 df$Phecode <- Phecode
我有一个包含 3 列和 27,000 个观察值的 table。如果没有可用的一位 phecode,我想将 phecode 汇总到一位或 0 位。我怎样才能在 R 中做到这一点?我在下面有一个我想做的例子。
table
的一部分ICD Flag Phecode
008.45 9 008
008.45 9 008.5
008.45 9 008.52
008.46 9 008
008.46 9 008.5
008.47 9 008
008.47 9 008.5
期望的输出
ICD Flag Phecode
008.45 9 008
008.45 9 008
008.45 9 008.5
008.46 9 008
008.46 9 008
008.47 9 008
008.47 9 008
提前致谢!
看起来你想要
- 如果小数点后有两位数,则将 Phecode 舍入到十分之一,否则截断为整数
- 保持前导零
# Sample data
Phecode <- c(008, 008.5, 008.52)
# nchar will read number with no decimal and leading zeros as "1", with decimal and tenth digit only as 3. If two numerals after decimal will be nchar >3 and round to tenth. Paste0 will add leading zeros.
paste0("00", ifelse(nchar(Phecode) > 3, round(Phecode, 1), round(Phecode,0)))
给出:
"008" "008" "008.5"
您可以强制转换为数字或添加到 df 为 df$Phecode <- Phecode