R 将数据帧划分为数字类别
我有一个数据,其dput如下所示 数据: 数据是法文的,基本上是从0到10,从10到20的分类,以此类推。我需要用数字替换第二列,例如,0Ã10 cm我需要分配给1,10Ã20 cm-分配给2等等,我如何根据R中的类别用数字自动替换值 在新表中,我需要将第2列中的A替换为类别级别,第2列的值如下所示:R 将数据帧划分为数字类别,r,R,我有一个数据,其dput如下所示 数据: 数据是法文的,基本上是从0到10,从10到20的分类,以此类推。我需要用数字替换第二列,例如,0Ã10 cm我需要分配给1,10Ã20 cm-分配给2等等,我如何根据R中的类别用数字自动替换值 在新表中,我需要将第2列中的A替换为类别级别,第2列的值如下所示: 2 1 4 1 1 2 4 3 4 2 首先,您必须整理数据以清理结构。我在数据部分做的。然后将第一列转换为系数,然后再转换为数值,以获得类别级别,并将其分配给第二列 df[, 2] <-
2 1 4 1 1 2 4 3 4 2
首先,您必须整理数据以清理结构。我在数据部分做的。然后将第一列转换为系数,然后再转换为数值,以获得类别级别,并将其分配给第二列
df[, 2] <- as.numeric( factor( df[[1]]) )
# X1 X2 X3
# 1 20 2 30 cm
# 2 10 1 20 cm
# 3 40 4 50 cm
# 4 10 1 20 cm
# 5 10 1 20 cm
# 6 20 2 30 cm
# 7 40 4 50 cm
# 8 30 3 40 cm
# 9 40 4 50 cm
# 10 20 2 30 cm
数据:
整理您的数据:
很难理解您的数据结构。请提供一个示例数据集。我需要根据文本分配数字,例如从0到10,它应该是1,从20到30-应该是2,所以onas.numericas.factor应该是这样。请查看。你的目标很明确。但是有一个问题,我们不知道你的数据是什么样子的-它是一个向量吗?数据帧?其他结构?这是什么课?是一列还是多列?我们可以看到Sathish假设你有4列,但你对答案的评论表明你只有1列。如果您遵循以下步骤,这些问题可以得到回答。这可能有效,还有一个问题-我如何将数据传播到0Ã10 cm到V1 V2 V3等等?谢谢您,Sathish!我现在就试试@L.Bond cut命令是执行此任务的正确命令,因此我删除了前两种方法。谢谢!但我仍然有一个问题-所有0Ã10 cm的值都在一列中,有没有办法进入不同的列?请使用此命令dputdata并将其输出发布到您的问题中。它将帮助人们理解您的数据结构。请参见Gregor对可复制示例的评论。
df[, 2] <- as.numeric( factor( df[[1]]) )
# X1 X2 X3
# 1 20 2 30 cm
# 2 10 1 20 cm
# 3 40 4 50 cm
# 4 10 1 20 cm
# 5 10 1 20 cm
# 6 20 2 30 cm
# 7 40 4 50 cm
# 8 30 3 40 cm
# 9 40 4 50 cm
# 10 20 2 30 cm
df <- structure(c(12L, 2L, 14L, 2L, 2L, 12L, 14L, 13L, 14L, 12L),
.Label = c("0 Ã 10 cm", "10 Ã 20 cm", "100 Ã 110 cm", "110 Ã 120 cm", "120 Ã 130 cm",
"130 Ã 140 cm", "140 Ã 150 cm", "150 Ã 160 cm", "160 Ã 170 cm",
"170 Ã 180 cm", "180 Ã 190 cm", "20 Ã 30 cm", "30 Ã 40 cm",
"40 Ã 50 cm", "50 Ã 60 cm", "60 Ã 70 cm", "70 Ã 80 cm", "80 Ã 90 cm",
"90 Ã 100 cm", "N/A"), class = "factor")
df <- as.character( df ) # convert factor to character
df <- data.frame( do.call('rbind', strsplit( df, "\ ") ), stringsAsFactors = FALSE ) # split string by spaces and row bind them together
df$X3 <- paste( df$X4, df$X5, sep = ' ') # combine column 4 & 5 together and assign it to column 3
df[, c('X4', 'X5')] <- NULL # remove column 4 and 5
df$X1 <- as.numeric( df$X1) # convert column 1 to numeric
df # structure of data
# X1 X2 X3
# 1 20 Ã 30 cm
# 2 10 Ã 20 cm
# 3 40 Ã 50 cm
# 4 10 Ã 20 cm
# 5 10 Ã 20 cm
# 6 20 Ã 30 cm
# 7 40 Ã 50 cm
# 8 30 Ã 40 cm
# 9 40 Ã 50 cm
# 10 20 Ã 30 cm