我想知道是否有一种方法或者可能是另一种使用SQL查询来操作数据帧的包,这样我就不必将数值变量转换为字符串/字符。
input_key <- c(9061,8680,1546,5376,9550,9909,3853,3732,9209)
output_data <- data.frame(input_key)
answer_product <- c("Water", "Bread", "Soda", "Chips", "Chicken", "Cheese", "Chocolate", "Donuts", "Juice")
answer_data <- data.frame(cbind(input_key, answer_product), stringsAsFactors = FALSE)
left_join(output_data,answer_data, by = "input_key")
答案 0 :(得分:1)
来自dplyr
的{{1}}函数也可以使用数值作为键。
我认为你的问题来自于&#39; cbind&#39;函数,因为它的输出是一个只能存储一种数据类型的矩阵。在您的情况下,数值将转换为char。
与matrix
相反,data.frame
可以存储不同类型的数据,例如列表。
形成代码,键列转换为char:
> str(answer_data)
'data.frame': 9 obs. of 2 variables:
$ input_key : chr "9061" "8680" "1546" "5376" ...
$ answer_product: chr "Water" "Bread" "Soda" "Chips" ...
相反,如果您使用以下内容构造data.frame:
answer_data_2 <- data.frame(
input_key = input_key,
answer_product = answer_product,
stringsAsFactors = FALSE
)
键colunm保持数字
> str(answer_data_2)
'data.frame': 9 obs. of 2 variables:
$ input_key : num 9061 8680 1546 5376 9550 ...
$ answer_product: chr "Water" "Bread" "Soda" "Chips" ...
和
left_join(output_data,answer_data, by = "input_key")
使用数字键