我在R中有一个由非负整数组成的数据帧。我想将数据框中的每个值转换为0或1,以便:x => x > 0 ? 1 : 0
我遇到了apply()
方法,但这似乎将整个行/列作为输入。是否有将每个单独数据点映射到新值的方法?
答案 0 :(得分:0)
您可以使用类似于三元运算符的ifelse。
以下是一个例子:
x <- c(1,2,3,4,0)
x <- ifelse(x > 0 , 1 , 0)
x
[1] 1 1 1 1 0
另一个例子,对于数据框:
df <- data.frame(A=c(0,0,0,1,2,3), B=c(0,10,20,30,40,0))
> df
A B
1 0 0
2 0 10
3 0 20
4 1 30
5 2 40
6 3 0
modified_df <- data.frame(A = ifelse(df$A > 0 , 1 , 0 ) , B = ifelse(df$B > 0 , 1 , 0 ))
> modified_df
A B
1 0 0
2 0 1
3 0 1
4 1 1
5 1 1
6 1 0