R使用逻辑变量转置数据帧

时间:2019-02-25 12:05:33

标签: r dataframe types transpose

我想在不丢失数据类型信息的情况下(即不将TRUE / FALSE设置为1/0的情况下)转置具有逻辑和数字变量的数据帧

这是我的代码:

xx <- data.frame(
  v1 = 200,
  v2 = 2,
  v3 = FALSE
)

#   v1 v2    v3
# 200  2 FALSE

t(xx)

#   [,1]
#v1  200
#v2    2
#v3    0

相反,我想得到:

t(xx)

#   [,1]
#v1  200
#v2    2
#v3    FALSE

我的最后一个监狱是要用rhandsontable将数据框显示为有光泽,以便对其进行修改,然后将其保存在csv文件中。由于我有一个多列只有两行的数据框,因此我想转置数据以更好地可视化。在保存之前,我再次将它们换位。 我能做什么? 谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我得益于Markus提出的想法

首先,我将数据类型保存在向量中

dat_type <- sapply(DF, class)

然后我转置数据帧

xx <- as.data.frame(t(xx), stringsAsFactors = F)

我用rhonsontable对其进行了修饰,然后在保存之前将其转置回去

xx <- as.data.frame(t(xx))

我使用受此问题启发的函数(Assign data types to each column of a data frame in R)为每一列设置正确的数据类型

data.type.assign <- function(xx, dat_type){
  for(col_ind in 1:ncol(xx)){
    switch (dat_type[col_ind],
            "numeric" = {xx[,col_ind] <- as.numeric(xx[,col_ind])},
            "character" = {xx[,col_ind] <- as.character(xx[,col_ind])},
            "logical" = {xx[,col_ind] <- as.logical(xx[,col_ind])},
            "integer" = {xx[,col_ind] <- as.integer(xx[,col_ind])}
    )
  }
  xx
}

像这样

xx <- data.type.assign(xx, dat_type)

仅此而已。现在,我将其另存为csv文件。也许有更快的方法可以做到这一点,但是这一方法相当不错。