Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从R中的另一列创建列并为其加电_R - Fatal编程技术网

从R中的另一列创建列并为其加电

从R中的另一列创建列并为其加电,r,R,目标是从下面数据的代码列创建两个新列。一个带数字,另一个带代码(系数)。我该怎么做?我尝试了ifelse(),但它出现了错误 structure(list(Potreiro = structure(c(3L, 3L, 3L, 3L, 3L, 4L, 3L, 4L, 3L, 4L), .Label = c("1A", "6B", "7A", "7B"), class = "factor"), Code = structure(c(4L, 1L, 8L, 3L, 2L, 4L, 6L, 5L,

目标是从下面数据的代码列创建两个新列。一个带数字,另一个带代码(系数)。我该怎么做?我尝试了
ifelse()
,但它出现了错误

structure(list(Potreiro = structure(c(3L, 3L, 3L, 3L, 
3L, 4L, 3L, 4L, 3L, 4L), .Label = c("1A", "6B", "7A", "7B"), class = 
"factor"), Code = structure(c(4L, 1L, 8L, 3L, 2L, 4L, 6L, 5L, 8L, 7L ), 
.Label = c("2", "3", "4", "5", "50%", "70%", "ac", "ad", "av", "cd", "de", 
"Dem"), class = "factor")), .Names = c("Potreiro", "Code"), row.names = 
c(NA, 10L), class = "data.frame")
谢谢

我会这样做:

df <- 
         structure(list(Potreiro = structure(c(3L, 3L, 3L, 3L, 
                                      3L, 4L, 3L, 4L, 3L, 4L), .Label = c("1A", "6B", "7A", "7B"), class = 
                                      "factor"), Code = structure(c(4L, 1L, 8L, 3L, 2L, 4L, 6L, 5L, 8L, 7L ), 
                                                                  .Label = c("2", "3", "4", "5", "50%", "70%", "ac", "ad", "av", "cd", "de", 
                                                                             "Dem"), class = "factor")), .Names = c("Potreiro", "Code"), row.names = 
            c(NA, 10L), class = "data.frame")

arenum <- sapply(df$Code, function (x) grepl('[[:digit:]]', x))
df$codenum <- ifelse(arenum, as.character(df$Code), NaN)
df$codechar <- ifelse(!arenum, as.character(df$Code), NaN)
df
df我会这样做:

df <- 
         structure(list(Potreiro = structure(c(3L, 3L, 3L, 3L, 
                                      3L, 4L, 3L, 4L, 3L, 4L), .Label = c("1A", "6B", "7A", "7B"), class = 
                                      "factor"), Code = structure(c(4L, 1L, 8L, 3L, 2L, 4L, 6L, 5L, 8L, 7L ), 
                                                                  .Label = c("2", "3", "4", "5", "50%", "70%", "ac", "ad", "av", "cd", "de", 
                                                                             "Dem"), class = "factor")), .Names = c("Potreiro", "Code"), row.names = 
            c(NA, 10L), class = "data.frame")

arenum <- sapply(df$Code, function (x) grepl('[[:digit:]]', x))
df$codenum <- ifelse(arenum, as.character(df$Code), NaN)
df$codechar <- ifelse(!arenum, as.character(df$Code), NaN)
df

df这里有一个使用
extract

library(dplyr)
library(tidyr)
df %>% 
  extract(Code, into = c('number', 'word'), '(\\d*)([a-z]*)', remove = FALSE, convert = TRUE)
#  Potreiro Code number word
#1        7A    5      5     
#2        7A    2      2     
#3        7A   ad     NA   ad
#4        7A    4      4     
#5        7A    3      3     
#6        7B    5      5     
#7        7A  70%     70     
#8        7B  50%     50     
#9        7A   ad     NA   ad
#10       7B   ac     NA   ac

这里有一个使用
extract

library(dplyr)
library(tidyr)
df %>% 
  extract(Code, into = c('number', 'word'), '(\\d*)([a-z]*)', remove = FALSE, convert = TRUE)
#  Potreiro Code number word
#1        7A    5      5     
#2        7A    2      2     
#3        7A   ad     NA   ad
#4        7A    4      4     
#5        7A    3      3     
#6        7B    5      5     
#7        7A  70%     70     
#8        7B  50%     50     
#9        7A   ad     NA   ad
#10       7B   ac     NA   ac

非常感谢。那很有用谢谢你!那是helpful@Júlio Azambuja是否需要将百分比放在单独的列中?@Júlio Azambuja是否需要将百分比放在单独的列中?
library(dplyr)
library(tidyr)
df %>% 
  extract(Code, into = c('number', 'word'), '(\\d*)([a-z]*)', remove = FALSE, convert = TRUE)
#  Potreiro Code number word
#1        7A    5      5     
#2        7A    2      2     
#3        7A   ad     NA   ad
#4        7A    4      4     
#5        7A    3      3     
#6        7B    5      5     
#7        7A  70%     70     
#8        7B  50%     50     
#9        7A   ad     NA   ad
#10       7B   ac     NA   ac