簡體   English   中英

ifelse在r中生成數值

[英]Ifelse generating numeric values in r

我知道有人問過類似的問題,但找不到所需的答案。 我正在嘗試在數據框的兩列中匹配一些字符:

 num   orig   new   match
 1      p      p      T
 2      t      g      F
 3      p      b      F
 4      d      d      T
 5      g      g      T

我想創建一個名為“ final”的新列,如果“ match”為true,則要將orig中的值復制到其中。 如果“ match”為假,我想將“ new”中的值復制到其中。 應該很容易!

我使用代碼:

 data <- data %>% mutate(final = ifelse(match == T, orig, new))

運行此命令時,“最終”列中的所有內容都變為數字。

我還嘗試了if_else,它生成消息“在[<-.factor*tmp* ,i,value = c(13L,13L,2L,13L,13L,4L,:無效的因子水平,生成的NA”)和將我的大部分FALSE值轉換為NA。

您可以顯式將列強制轉換為字符。

#install.packages("dplyr")
library(dplyr)
data = read.table(header = T,
text = 'num   orig   new   match
1      p      p      T
2      t      g      F
3      p      b      F
4      d      d      T
5      g      g      T')

data <- 
  data %>% 
  mutate_if(is.factor, as.character) %>%
  mutate(final = as.character(ifelse(match == T, orig, new)))

str(data)
#'data.frame':  5 obs. of  5 variables:
#$ num  : int  1 2 3 4 5
#$ orig : chr  "p" "t" "p" "d" ...
#$ new  : chr  "p" "g" "b" "d" ...
#$ match: logi  TRUE FALSE FALSE TRUE TRUE
#$ final: chr  "p" "g" "b" "d" ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM