将列值汇总为 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

提前致谢!

看起来你想要

  1. 如果小数点后有两位数,则将 Phecode 舍入到十分之一,否则截断为整数
  2. 保持前导零
# 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