用R中另一列中的值替换一列中的空单元格

问题描述 投票:0回答:1

我正在尝试将单元格值从StudyID列拉至空单元格SigmaID列,但输出遇到一个奇怪的问题。

这是我的数据在运行命令之前的样子。

StudyID    Gender  Region  SigmaID
LM24008      1       20    LM24008  
LM82993      1       16    LM28888  
ST04283      0       44      
ST04238      0       50      
LM04829      1       24    LM23921  
ST91124      0       89
ST29001      0       55

我尝试通过三种方式编写语法来完成此操作,因为我不确定逻辑设置方式是否存在问题。这三个都产生相同的输出。

df$SigmaID <- ifelse(test = df$SigmaID != "", yes = df$SigmaID, no = df$StudyID)

df$SigmaID <- ifelse(df$SigmaID == "", df$StudyID, df3$SigmaID)

df %>% mutate(SigmaID = ifelse(Gender == 0, df$StudyID, df$SigmaID)

输出:不是从StudyID列中提取值,而是填充一到四位数字。

StudyID    Gender  Region  SigmaID
LM24008      1       20    LM24008  
LM82993      1       16    LM28888  
ST04283      0       44    5  
ST04238      0       50    4908  
LM04829      1       24    LM23921
ST91124      0       89    209
ST29001      0       55    4092

我尝试将空白空间重新编码为NA,然后在逻辑中调用NA,但这产生了与上述相同的输出。我想知道它是否与变量类型或变量属性有关,并且在读取StudyID中的字符时出现了一些问题。感谢您对此问题的反馈!

r missing-data
1个回答
0
投票

这里是怎么做:

df$SigmaID[df$SigmaID == ""] = df$StudyID[df$SigmaID == ""]

[df[df$SigmaID == ""]仅选择SigmaID==""]的行>

我也建议使用data.table代替data.frame

© www.soinside.com 2019 - 2024. All rights reserved.