假设你有一个在 R 中的 Data.Frame 对象,其中所有字符列都被转换为 factors。现在需要"修改"数据框中某一行的值——但仍然保留其作为 factor 的编码方式。首先需要提取单行数据,下面是一个可重现的示例:
a = c("ab", "ba", "ca")
b = c("ab", "dd", "da")
c = c("cd", "fa", "op")
data = data.frame(a,b,c, row.names = c("row1", "row2", "row3")
colnames(data) <- c("col1", "col2", "col3")
data[,"col1"] <- as.factor(data[,"col1"])
newdat <- data["row1",]
newdat["col1"] <- "ca"
当我将“ca”分配给newdat [“col1”]时,数据中与该列相关联的Factor对象被字符串“ca”覆盖。 这不是预期的行为。 相反,我想修改编码新数据中存在哪个级别的数值。 因此,我希望按如下方式更改newdat [“col1”]的内容:
之前:
Factor object, levels = c("ab", "ba", "ca"): 1 (the value it had)
之后:
Factor object, levels = c("ab", "ba", "ca"): 3 (the value associated with the level "ca")
我该如何完成这个任务?
factor
来包含新的水平,然后进行赋值。 - akrundataframe[15,'field'] <- new_val
吗?(没有可重现的示例未经测试) - akrun