我有一个看起来像的数据集
data<-c(0,1,2,3,4,2,3,1,4,3,2,4,0,1,2,0,2,1,2,0,4)
frame<-as.data.frame(data)
Run Code Online (Sandbox Code Playgroud)
我现在想在这个数据框中创建一个新变量.如果列"data"报告的数字为2或更多,我希望它在该行中有"2",如果有1或0(例如前两个观察),我希望新变量有一个该观察结果为"1".
我试图使用以下代码执行此操作:
frame$twohouses<- if (any(frame$data>=2)) {frame$twohouses=2} else {frame$twohouses=1}
Run Code Online (Sandbox Code Playgroud)
但是,如果我运行这3行脚本,则"twohouses"列中的每个观察都用2编码.但是其中一些应该用1编码.
所以我的问题是:我的if else行或脚本出了什么问题?或者是否有另一种方法可以做到这一点.
我的问题类似于这个问题: 在R中使用ifelse因子
但没有人回答这个问题.
提前谢谢了!
And*_*rie 42
用途ifelse:
frame$twohouses <- ifelse(frame$data>=2, 2, 1)
frame
data twohouses
1 0 1
2 1 1
3 2 2
4 3 2
5 4 2
...
16 0 1
17 2 2
18 1 1
19 2 2
20 0 1
21 4 2
Run Code Online (Sandbox Code Playgroud)
if和之间的区别ifelse:
if 是一个控制流语句,将单个逻辑值作为参数ifelse 是一个矢量化函数,以向量作为其所有参数.if可访问的帮助页面?"if"也会指向您?ifelse
| 归档时间: |
|
| 查看次数: |
92784 次 |
| 最近记录: |