R 如何基于类提取非因子列的唯一值
我正在创建一个R 如何基于类提取非因子列的唯一值,r,R,我正在创建一个数据.frame作为现有数据的码本。frame和码本的一列是现有数据.frame的每列中的值范围。 我需要填充类:字符列中的每个唯一值,并用“/”分隔它们 1) 我尝试使用if-else语句,其中条件是列的class,而函数是unique() 2) 我还使用了if-else语句,并使用列的第一个元素(使用x[1]作为函数)并收到了预期的输出 dat是现有的数据帧 function(dat){ dfr <- data.frame( row.names = c(1:length(
数据.frame
作为现有数据的码本
。frame
和码本
的一列是现有数据.frame
的每列中的值范围。
我需要填充类
:字符
列中的每个唯一值,并用“/”分隔它们
1) 我尝试使用if-else
语句,其中条件是列的class
,而函数是unique()
2) 我还使用了if-else
语句,并使用列的第一个元素(使用x[1]
作为函数)并收到了预期的输出
dat
是现有的数据帧
function(dat){
dfr <- data.frame(
row.names = c(1:length(colnames(dat))),
ColumnNames = names(dat),
class = sapply(dat, class),
Range = sapply(dat, function(x)
if(class(x) == "character")
paste(unique(x), sep = " / ")
else if(class(x) == "numeric" || class(x) == "integer")
paste(min(x), max(x), sep = " - ")
else
class(x)),```
function(dat){
dfr <- data.frame(
row.names = c(1:length(colnames(dat))),
ColumnNames = names(dat),
class = sapply(dat, class),
Range = sapply(dat, function(x)
if(class(x) == "character")
x[1]
else if(class(x) == "numeric" || class(x) == "integer")
paste(min(x), max(x), sep = " - ")
else
class(x)),```
但是,当我使用x[1]作为函数时,它返回列的第一个元素作为
在OP的第一个功能中应为
paste(unique(x), sep = " / ")
返回与输入相同的输出(unique(x)
),该输入可以是长度大于1的向量。它是函数中唯一可以返回长度大于1的向量的行。代码可以更改为
paste(unique(x), collapse = " / ")
这种差异是可重复的
paste(1:3, sep=' / ')
#[1] "1" "2" "3" # returns the same length
paste(1:3, collapse=" / ")
#[1] "1 / 2 / 3" # single string
在OP的第一个函数中
paste(unique(x), sep = " / ")
返回与输入相同的输出(unique(x)
),该输入可以是长度大于1的向量。它是函数中唯一可以返回长度大于1的向量的行。代码可以更改为
paste(unique(x), collapse = " / ")
这种差异是可重复的
paste(1:3, sep=' / ')
#[1] "1" "2" "3" # returns the same length
paste(1:3, collapse=" / ")
#[1] "1 / 2 / 3" # single string
我认为在第一个函数中,您需要paste(unique(x),collapse=“/”
,因为如果执行paste(1:5,sep=“/”
),它除了返回字符向量并将其更改为paste(1:5,collapse=“/”
返回单个字符串外,什么都不做。我认为在第一个函数中,您需要paste(unique(x),collapse=“/”
,因为如果你粘贴(1:5,sep=“/”)
,它除了返回字符向量并将其更改为粘贴(1:5,collapse=“/”)返回一个字符串谢谢akrun。不确定我怎么没想到尝试折叠
谢谢akrun。不确定我怎么没想到尝试折叠