我试图在数据框中为每个观察添加因子。特别是,我有一个名为test的数据框,有7列和100行。我把它初始化为:
test<-as.data.frame(matrix(ncol=7,nrow=100))
> names(test1)
[1] "V1" "V2" "V3" "V4" "V5" "V6" "V7"
我想插入因素&#34;雇用&#34;,&#34;失业&#34;,&#34;失业&#34;力&#34;在V1列中分别重复65次,20次,15次。我尝试使用&#34;雇用&#34;:
test$V1<-rep("Employed", time=65)
Error in `$<-.data.frame`(`*tmp*`, "V1", value = c("Employed", "Employed", :
replacement has 65 rows, data has 100
正如您所看到的,我收到了错误消息。我正在寻找一个快速简单的解决方案。谢谢你的帮助。
答案 0 :(得分:2)
test$V1 <- c(rep("Employed", time=65), rep("Unemployed", 20), rep("Out of Labor", 15))
答案 1 :(得分:2)
您可以使用times
中的rep
参数来说明重复每个值的次数。然后,您需要factor
来实际创建一个因子。否则它只是一个字符串向量。
> test$V1 <- factor( rep(c("Employed", "Unemployed", "Out of labor"),
times=c(65,20,15)) )
> table(test$V1)
Employed Out of labor Unemployed
65 15 20
您可以看到使用factor
与使用此代码之间的区别:
> rep(c("A","B","C"), 2)
[1] "A" "B" "C" "A" "B" "C"
> factor(rep(c("A","B","C"), 2))
[1] A B C A B C
Levels: A B C
请注意,在第一种情况下,我们没有因子而是字符串向量。
答案 2 :(得分:2)
您也可以使用replicate
代替rep
。然后as.factor
创建因子并将class
从字符转换为因子。
> f <- c("Employed", "Unemployed", "Out of labor force")
> test$V1 <- unlist(mapply(replicate, c(65, 20, 15), as.factor(f)))