使用命名向量生成dataframe列
我计划用命名向量创建一个新列,它可以匹配dataframe中的名称,但似乎匹配没有正确完成 下面是一个示例代码使用命名向量生成dataframe列,r,R,我计划用命名向量创建一个新列,它可以匹配dataframe中的名称,但似乎匹配没有正确完成 下面是一个示例代码 vector <- c(APPLE=10,BANANA=2,KIWI=3,CARROT=4,ORANGE=5) df <- data.frame(fru=c("APPLE","KIWI","CARROT","CARROT","KIWI","ORANGE"
vector <- c(APPLE=10,BANANA=2,KIWI=3,CARROT=4,ORANGE=5)
df <- data.frame(fru=c("APPLE","KIWI","CARROT","CARROT","KIWI","ORANGE","BANANA"))
df$num <- vector[df$fru]
但在数据框中,对应于猕猴桃和胡萝卜的数字不匹配
fru num
1 APPLE 10
2 KIWI 4
3 CARROT 3
4 CARROT 3
5 KIWI 4
6 ORANGE 5
7 BANANA 2
我在向量中建立索引的方式是否存在任何误解?可能“fru”列是
因子。它必须是字符
类
vector[as.character(df$fru)]
# APPLE KIWI CARROT CARROT KIWI ORANGE BANANA
# 10 3 4 4 3 5 2
从R4.0
开始,当我们创建data.frame
(或使用read.csv/read.table
等)时,默认情况下,stringsAsFactors=FALSE
。如果R
的版本小于4,则默认情况下stringsAsFactors=TRUE
。一个选项是在构造数据.frame
时将参数指定为FALSE
,或者使用as.character将参数转换为字符我在我的RStudio控制台复制了你的逐字代码,并且df
中猕猴桃和胡萝卜的对应数字与向量中的数字匹配。我不知道你是怎么得到不同的结果的
我也不明白……最好在另一台计算机上试试。。。谢谢你,真是太棒了!正如您所建议的,我的R版本是3.6.1。当我改变专栏的类别时,它起了作用。非常感谢。
vector[as.character(df$fru)]
# APPLE KIWI CARROT CARROT KIWI ORANGE BANANA
# 10 3 4 4 3 5 2