以下是一些示例数据:
Age Parent
0 4
2 4
5 3
8 3
10 4
15 2
18 2
19 0
数据代表男性和女性父母在鸟巢的出勤率。这里,4 =父母双方都存在,3 =仅存在男性,2 =仅存在女性,0 =父母双方都不存在。
我想生成一个新列(最好是除原始父列而不是替换它)给出二进制数据,其中3和4成为' 1'和2和0成为' 0'。
因此,我的示例数据将提供以下二进制列:
Age Parent
0 1
2 1
5 1
8 1
10 1
15 0
18 0
19 0
我希望我已经提供了足够的信息,但请询问您是否需要一些额外的细节。
答案 0 :(得分:1)
您可以这样做:
df$parentNew <- ifelse(df$Parent %in% c(3, 4), 1, 0)
df
Age Parent parentNew
1 0 4 1
2 2 4 1
3 5 3 1
4 8 3 1
5 10 4 1
6 15 2 0
7 18 2 0
8 19 0 0
答案 1 :(得分:1)
与大多数R问题一样,有几种不同的方法可以做到这一点,但最简单的可能是(让我们说你已经将数据存储在一个数据框中{{1 }}):
d
当然,在上面的代码中可以使用任意数量的逻辑向量代替d$Father <- ifelse(d$Parent >= 3, 1, 0)
。
您还可以直接利用R同等对待d$Parent >= 3
和1
的事实:
TRUE
这两个结果向量都适用于大多数R应用程序。
对于更复杂的案例处理,d$Dad <- d$Parent %in% c(3,4)
d$Dad_Num <- as.numeric(d$Dad <- d$Parent %in% c(3,4))
包提供了memisc
函数(虽然语法需要一些时间来习惯):
cases
这在您的情况下是过度的,但可能有助于了解将来。