我使用数据有问题.表:如何转换列类?下面是一个简单的例子:使用数据.框架我在转换数据时没有问题.我只是不知道怎么做:

df <- data.frame(ID=c(rep("A", 5), rep("B",5)), Quarter=c(1:5, 1:5), value=rnorm(10))
#One way: http://stackoverflow.com/questions/2851015/r-convert-data-frame-columns-from-factors-to-characters
df <- data.frame(lapply(df, as.character), stringsAsFactors=FALSE)
#Another way
df[, "value"] <- as.numeric(df[, "value"])

library(data.table)
dt <- data.table(ID=c(rep("A", 5), rep("B",5)), Quarter=c(1:5, 1:5), value=rnorm(10))
dt <- data.table(lapply(dt, as.character), stringsAsFactors=FALSE) 
#Error in rep("", ncol(xi)) : invalid 'times' argument
#Produces error, does data.table not have the option stringsAsFactors?
dt[, "ID", with=FALSE] <- as.character(dt[, "ID", with=FALSE]) 
#Produces error: Error in `[<-.data.table`(`*tmp*`, , "ID", with = FALSE, value = "c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2)") : 
#unused argument(s) (with = FALSE)

我错过了一些明显的东西吗?

由于Matthew的帖子而更新:我以前使用的是旧版本,但即使在更新到1.6.6(我现在使用的版本)之后,我仍然会收到一个错误.

更新2:假设我想将类"factor"的每一列都转换为"character"列,但事先不知道哪个列属于哪个类.带着数据.在frame中,我可以执行以下操作:

classes <- as.character(sapply(df, class))
colClasses <- which(classes=="factor")
df[, colClasses] <- sapply(df[, colClasses], as.character)

我可以对数据做类似的事情吗.桌子

更新3:

sessionInfo()

locale:
[1] C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] data.table_1.6.6

loaded via a namespace (and not attached):
[1] tools_2.13.1

推荐答案

对于单个列:

dtnew <- dt[, Quarter:=as.character(Quarter)]
str(dtnew)

Classes ‘data.table’ and 'data.frame':  10 obs. of  3 variables:
 $ ID     : Factor w/ 2 levels "A","B": 1 1 1 1 1 2 2 2 2 2
 $ Quarter: chr  "1" "2" "3" "4" ...
 $ value  : num  -0.838 0.146 -1.059 -1.197 0.282 ...

使用lapplyas.character:

dtnew <- dt[, lapply(.SD, as.character), by=ID]
str(dtnew)

Classes ‘data.table’ and 'data.frame':  10 obs. of  3 variables:
 $ ID     : Factor w/ 2 levels "A","B": 1 1 1 1 1 2 2 2 2 2
 $ Quarter: chr  "1" "2" "3" "4" ...
 $ value  : chr  "1.487145280568" "-0.827845218358881" "0.028977182770002" "1.35392750102305" ...

R相关问答推荐

替换字符的所有实例,但仅限于匹配字符串中

Facet_wrap具有不同bin宽度值的图表

如何使用行政边界形状文件中的人口普查数据调整格栅数据集中的人口数据

Select 与特定列中最大值对应的数据帧行

将带有范围的字符串转换为R中的数字载体

为什么st_join(ob1,ob2,left = True)返回具有比ob1更多功能的sf对象?

用预测NLS处理R中生物学假设之上的误差传播

在R中按行按列范围查找最大值的名称

给定开始日期和月份(数字),如何根据R中的开始日期和月数创建日期列

更新R中的数据表(使用data.table)

将标识符赋给事件序列,避免错误观察

在另一个包中设置断点&S R函数

R:如果为NA,则根据条件,使用列名模式将缺少的值替换为另一列中的值

停止ggplot将多行减少到一行

在使用具有Bray-Curtis相似性的pvCluust时计算p值

使用gt_summary是否有一种方法来限制每个变量集进行配对比较?

在不对R中的变量分组的情况下取两行的平均值

按组使用dummy r获取高于标准的行的平均值

如何使用grepl()在数据帧列表中 Select 特定字符串?

conditionPanel不考虑以下条件