R,从因子值生成数据帧行

时间:2017-02-03 14:38:08

标签: r

我有一个带有因子列的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]分配任何内容时,我似乎都会更改其类型。

提前致谢。

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仍是所有级别的因素