当我的值在“short_desc”列中只有一个因子级别时,我有一些代码可以正常工作。它取“Value”并在“Value.fc”列中输出相应的十分位数范围。
操作之前的data.frame如下所示:
我将这些代码行应用于数据帧“df”:
df <- df %>%
mutate(Value.fc = cut2(Value, g=10),
Value.fc = factor(sapply(str_extract_all(Value.fc, "\\d+"),
function(x) paste(x, collapse="-"))),
Value.fc = reorder(Value.fc, Value))
结果是列“Value.fc”,它们是十进制因子范围:
当“short_desc”列有多个级别时会出现问题。
我无法通过“short_desc”对观察值进行子集化,并应用代码来获取每个子集的十分位数“Value.fc”。由此产生的十分位数范围不正确。我使用了以下代码:
df <- df %>%
group_by(short_desc) %>%
mutate(Value.fc = cut2(Value, g=10),
Value.fc = factor(sapply(str_extract_all(Value.fc, "\\d+"),
function(x) paste(x, collapse="-"))),
Value.fc = reorder(Value.fc, Value)) %>%
ungroup()
结果数据框如下所示:
任何指导都将不胜感激。样本数据:
dput(head(df)) structure(list(state = c("Iowa", "Iowa", "Illinois"), short_desc = c("Corn, grain - yield, measured in bu / acre", "Corn, silage - yield, measured in tons / acre", "Corn, grain - yield, measured in bu / acre"), Value = c(137.8, 13.5, 153.3), FIPS = c("19001", "19001", "17001"), Value.fc = c("135-0-150", "13-0-14-5", "150-4-157"))