我有一个带有因子列的R数据框。
dataframe <- read.csv("import.csv")
dataframe$col1 = as.factor(dataframe$col1)
dataframe$col2 = as.factor(dataframe$col2)
...
如何从标签生成新行?
newRow = dataframe[1,] #template
newRow[1] = ?
newRow[2] = ?
让我们说col1
包括"TestValue"
。我想将newRow[1]
值设置为"TestValue"
,就好像它是从我的dataframe
中选择的一样。我怎么能这样做?
我知道我可以得到因子索引:
match(c("TestValue"),levels(dataframe$col1))
[1] 3
但每当我向newRow[1]
分配任何内容时,我似乎都会更改其类型。
提前致谢。
答案 0 :(得分:2)
您可以将factor
分配给newRow[1]
并保持级别。
在你的情况下:
newRow[1] <- factor('TestValue', levels = levels(df$col1))
举个例子:
df <- data.frame(a = letters, b = letters)
new <- df[1, ]
new[1] <- factor('b', levels = levels(df[[1]]))
输出:
> str(new)
'data.frame': 1 obs. of 2 variables:
$ a: Factor w/ 26 levels "a","b","c","d",..: 2
$ b: Factor w/ 26 levels "a","b","c","d",..: 1
列a仍是所有级别的因素