根据另一个变量剪切变量 - R

时间:2017-11-20 08:50:35

标签: r

我的数据框中有两个变量,如BloodSugarTestType,BloodSugarReading。测试类型可以有三个值 - '禁食','随机'邮政品牌'现在基于BloodSugarTestType,我需要将BloodSugarReading分类到不同的范围。

我这样想:

DBRiskProfiling.Data[DBRiskProfiling.Data$bld_sgr_ctgry=='Fasting', c('bld_sgr')] <- cut(DBRiskProfiling.Data[DBRiskProfiling.Data$bld_sgr_ctgry=='Fasting', "bld_sgr"], breaks=c(0, 126, 500))

有没有人可以帮助如何使用剪切功能?

示例:TestType - 禁食
血糖阅读类别 - (0,126),(126,300)##这些是水平

TestType - 随机
血糖阅读类别 - (0,126),(126,200),(200,300)##这些是水平

What I have is left side table, What I want is right side table。对不起,因为我无法解释清楚。

1 个答案:

答案 0 :(得分:0)

你的描述不是很清楚,但我猜你的意思是这样的(我不认为你想要的是cut()):

# first, create a variable with informative string values for each category (assuming df is your data.frame)
df$reading_cat <- "f1"

df$reading_cat[df$testType == "Fasting" & df$reading > 127] <- "f2"
df$reading_cat[df$testType == "Random" & df$reading < 127] <- "r1"
df$reading_cat[df$testType == "Random" & df$reading >= 127 & df$reading < 201] <- "r2"
df$reading_cat[df$testType == "Random" & df$reading >= 201] <- "r3"

[...and so on for other categories...]

# then recode as factor to assign the labels you want
df$reading_cat <- recode(df$reading_cat, "'f1' = '(0, 126]'; 'f2' = '(126, 200]'; 'r1' = '(0, 126]'; 'r2' = '(126, 200]'; 'r3' = [...]")

一些警告。您将能够将此变量用作有序因子,因为您有重叠的类别,因此,对于任何分析,您都必须指定自定义对比。