2017-08-10 19 views
0

是否可以使用查找表来分配/更改R中数据框中的变量类?我有成千上万的列在一个数据框(my_df)中混淆了类,列出了它们应该在另一个数据框(my_lt)中。伪代码,我想这样对colnames(my_df)使用my_lt $变量名和grep(),并通过as.numeric通过输出,如果LT $ variable_class ==“数字”,用某种形式的if..else的。任何帮助将非常感激!使用R中的查找表选择多个列并更改它们的类?

输入 - 我的数据帧(my_df)

my_df = data.frame(q1_hight_1=c(12,31,22,12),q1_hight_2=c(24,54,23,32),q1_hight_3=c(34,23,65,34),q2_shoe_size_1=c(2,2,3,4),q2_shoe_size_2=c(4,3,3,4)) 

输入 - 我的查找表(my_lt)

my_lt = data.frame(variable_name=c("hight","shoe_size"),variable_class=c("numeric","integer")) 

期望的输出(检查时班)

$q1_hight_1 [1] "numeric" $q1_hight_2 [1] "numeric" $q1_hight_3 [1] "numeric" $q2_shoe_size_1 [1] "integer" $q2_shoe_size_2 [1] "integer" 
+0

你可以使用'mapply'和一个switch语句。 –

回答

0

这确实诀窍,因为在你给变量赋予的名称中没有陷阱(我使用了非常幼稚的grep)。

library(dplyr) 
library(purr) 
map2(as.character(my_lt$variable_name), 
    as.character(my_lt$variable_class), 
    function(nam,cl){ map(grep(nam,names(my_df)),function(i){class(my_df[[i]]) <<- cl})}) 

str(my_df) 
# 'data.frame': 4 obs. of 5 variables: 
# $ q1_hight_1 : num 12 31 22 12 
# $ q1_hight_2 : num 24 54 23 32 
# $ q1_hight_3 : num 34 23 65 34 
# $ q2_shoe_size_1: int 2 2 3 4 
# $ q2_shoe_size_2: int 4 3 3 4 
相关问题