我有一个数据集,我想要进行多级分析。因此,对于每位患者,我有两行,并且有一列1和2(1 =患者,2 =患者的伴侣)。R - 按给定的语句在if循环中用同一个df中的另一个值替换行的值
现在,我有变量与出生日期和年龄,病人和合作伙伴在不同的列现在在同一行。 我想要做的就是写,做了代码:
if mydata$couple == 2, then replace mydata$dateofbirthpatient with mydata$dateofbirthpatient
而且,对于每一行。由于我有多个要替换的变量,如果我可以在循环中获得这个变量并且只是“添加”我想替换的变量,那将是可爱的。
我试了一下,到目前为止:
mydf_longer <- if (mydf_long$couple == 2) {
mydf_long$pgebdat <- mydf_long$prgebdat
}
Ofcourse这是行不通的 - 但是简单地说,这是我想要的。
我开始使用此代码,按照By row, replace values equal to value in specified column 的例子,但不知道如何完成:
mydf_longer[6:7][mydf_longer[,1:4]==mydf_longer[2,2]] <-
任何想法?如果您需要更多信息,请与我们联系。数据
例子:
# id couple groep_MNC zkhs fbeh pgebdat p_age pgesl prgebdat pr_age
# 1 3 1 1 1 1 1955-12-01 42.50000 1 <NA> NA
# 1.1 3 2 1 1 1 1955-12-01 42.50000 1 <NA> NA
# 2 5 1 1 1 1 1943-04-09 55.16667 1 1962-04-18 36.5
# 2.1 5 2 1 1 1 1943-04-09 55.16667 1 1962-04-18 36.5
# 3 7 1 1 1 1 1958-04-10 40.25000 1 <NA> NA
# 3.1 7 2 1 1 1 1958-04-10 40.25000 1 <NA> NA
mydf_long <- structure(
list(id = c(3L, 3L, 5L, 5L, 7L, 7L),
couple = c(1L, 2L, 1L, 2L, 1L, 2L),
groep_MNC = c(1L, 1L, 1L, 1L, 1L, 1L),
zkhs = c(1L, 1L, 1L, 1L, 1L, 1L),
fbeh = c(1L, 1L, 1L, 1L, 1L, 1L),
pgebdat = structure(c(-5145, -5145, -9764, -9764, -4284, -4284), class = "Date"),
p_age = c(42.5, 42.5, 55.16667, 55.16667, 40.25, 40.25),
pgesl = c(1L, 1L, 1L, 1L, 1L, 1L),
prgebdat = structure(c(NA, NA, -2815, -2815, NA, NA), class = "Date"),
pr_age = c(NA, NA, 36.5, 36.5, NA, NA)),
.Names = c("id", "couple", "groep_MNC", "zkhs", "fbeh", "pgebdat",
"p_age", "pgesl", "prgebdat", "pr_age"),
row.names = c("1", "1.1", "2", "2.1", "3", "3.1"),
class = "data.frame"
)
尝试mydf_long $ pgebdat < - ifelse(mydf_long $夫妇== 2,mydf_long $ prgebdat,mydf_long $ pgebdat) – user108363