首页 > 解决方案 > 函数唯一更改R中data.frame中列的数据类型

问题描述

假设我有一个数据框,并获取一列的 unqiue 值:

df = data.frame(a = c(1,2,3,4), b = c('1','2','3','x'))
b = unique(df$b)

> b
[1] 1 2 3 x
Levels: 1 2 3 x

当我尝试连接唯一向量 b 和附加值时:

c(b, 'xx')

它返回

> c(b, 'xx')
[1] "1"  "2"  "3"  "4"  "xx"

有没有办法在数据框中获取原始值?像:

[1] "1"  "2"  "3"  "x"  "xx"

标签: rdataframeunique

解决方案


我们可以转换为character然后连接以避免强制转换为factor“b”的整数存储值

c(as.character(unique(b$b)), 'xx')
#[1] "1"  "2"  "3"  "x"  "xx"

或者在创建时data.frame,使用stringsAsFactors = FALSE(默认情况下是TRUE)避免将带有字符元素的列转换为factor

df <- data.frame(a = c(1,2,3,4), b = c('1','2','3','x'), stringsAsFactors = FALSE)

现在,OP的代码可以工作了

c(unique(b$b), 'xx')

推荐阅读