使用 .csv 文件为 R 中的因素分配标签
Assign lables to factors in R using .csv-file
我正在 R 中处理一个 .csv 文件,其中有一列我想作为一个因素处理。它包含数字。
variable1
1
2
4
4
1
3
and so on
我现在想为这个因子变量分配标签。我所做的工作:
v1$variable1 <- factor(v1$variable1,
levels = c(1,2,3, 4, 5, 6 (and so on)),
labels = c("school 1", "school 2", "school 3", "school 4", "school 5",
"school 6" (and so on))
但是,学校列表是非常动态的,与其每次都更改代码,不如让另一个包含级别和标签的 csv 文件更优雅:
level lables
1 school1
2 school2
3 school3
and so on
然后将该 csv 文件读入 R 代码并根据第二个 cvs 文件分配标签。这可能吗?如果可能,怎么做?
非常感谢您的帮助!!
一般来说,如果您按照建议使用外观 table,您可以...
school_lut <- data.frame(
value = c(1, 2, 3, 4, 5),
label = c("Cambridge", "Bezt school", "R", "S", "Holly")
)
school_lut_ss <- school_lut[school_lut$value %in% df$var1, ]
# Previous step only needed to eliminate levels you don't have in your data
df$var1 <- factor(df$var1, school_lut_ss$value, school_lut_ss$label)
table(df$var1)
# Cambridge Bezt school S Holly
# 1 4 1 2
数据
set.seed(12)
df <- data.frame(
var1 = sample(1:5, size = 8, replace = TRUE)
)
如果你在v2
中创建另一个csv,你可以使用match
将variable1
与level
匹配并得到相应的lables
。
v1$variable2 <- v2$lables[match(v1$variable1, v2$level)]
v1$variable2 <- factor(v1$variable2)
也许 merge
也适用于这种情况
v1 <- merge(v1, v2, by.x = 'variable1', by.y = 'level')
我正在 R 中处理一个 .csv 文件,其中有一列我想作为一个因素处理。它包含数字。
variable1
1
2
4
4
1
3
and so on
我现在想为这个因子变量分配标签。我所做的工作:
v1$variable1 <- factor(v1$variable1,
levels = c(1,2,3, 4, 5, 6 (and so on)),
labels = c("school 1", "school 2", "school 3", "school 4", "school 5",
"school 6" (and so on))
但是,学校列表是非常动态的,与其每次都更改代码,不如让另一个包含级别和标签的 csv 文件更优雅:
level lables
1 school1
2 school2
3 school3
and so on
然后将该 csv 文件读入 R 代码并根据第二个 cvs 文件分配标签。这可能吗?如果可能,怎么做?
非常感谢您的帮助!!
一般来说,如果您按照建议使用外观 table,您可以...
school_lut <- data.frame(
value = c(1, 2, 3, 4, 5),
label = c("Cambridge", "Bezt school", "R", "S", "Holly")
)
school_lut_ss <- school_lut[school_lut$value %in% df$var1, ]
# Previous step only needed to eliminate levels you don't have in your data
df$var1 <- factor(df$var1, school_lut_ss$value, school_lut_ss$label)
table(df$var1)
# Cambridge Bezt school S Holly
# 1 4 1 2
数据
set.seed(12)
df <- data.frame(
var1 = sample(1:5, size = 8, replace = TRUE)
)
如果你在v2
中创建另一个csv,你可以使用match
将variable1
与level
匹配并得到相应的lables
。
v1$variable2 <- v2$lables[match(v1$variable1, v2$level)]
v1$variable2 <- factor(v1$variable2)
也许 merge
也适用于这种情况
v1 <- merge(v1, v2, by.x = 'variable1', by.y = 'level')