![](/img/trans.png)
[英]I have a data frame with 10 columns and thousand of rows. I want to replace 4th column (value<=0.05) with NA. How can I do this using R script
[英]If two columns have the same value, how can I replace NA in a third column with this value in R?
我正在处理数据,其中参与者的性别已在三列(基线、第一个时间点和第二个时间点)中注明。 对于数百名参与者,他们在基线和第二个时间点的性别没有改变,但在第一个时间点是 NA。
如果在(基线)之前和之后(第二个时间点)的列中存在相同的值(1=男性,2=女性),我正在尝试导出正确的代码来更改此列中的 NA。 我的知识很基础,因为我目前正在学习 R。
请问有人可以建议一些可能有效的代码吗? 我试图找出一个带有 if/else 语句的 for 循环,但还没有完全实现。
df$tp1 是第一个时间点,df$base 是基线,df$tp2 是第二个时间点
for(i in df$tp1) {
if (df$base == df$tp2)
df <- replace(df$tp1, df$tp1 =="NA", df$base)
else (df$tp1 == df$tp1)}
print(df)
编辑:请在下面找到数据示例
Baseline TP1 TP2
1 NA 1
1 1 1
2 NA 2
1 1 1
1 1 1
2 2 2
在第 1 行和第 3 行中,我希望能够将 NA 更改为与基线和第二个时间点相同的数字,即在这些行中分别为 1 和 2。
dput(head(gender_only, 15))
structure(list(Baseline = c(1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 2L, 2L), `First-timepoint` = c(NA, 1L, NA, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L), `second-timepoint` = c(1L,1L, 2L, NA, 1L, 1L, NA, 1L, 1L, 1L, 1L, 1L, 2L, 2L, NA)), row.names = c(NA,
15L), class = "data.frame")
您可以尝试使用dplyr
包中的mutate
和case_when
。 来自case_when
文档:“此函数允许您向量化多个 if 和 else if 语句。”
#if you haven't installed it yet
#install.packages('dplyr')
df <- df %>%
mutate(TP1 = case_when(Baseline == TP2 ~ TP2),
TRUE ~ TP1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.