对于示例数据框:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
// Do something
end;
end;
我想添加一个额外的列'complete.farm'来识别哪些行在'sheep'和'cow'和'pig'列中有值。在一个或多个中具有NA的任何行 这些列中的更多列应该为0,具有实数值的行应该为1。
如果有人能就此给我一些建议,我会非常感激。我通常使用完整的案例来对我的数据帧进行子集化,但这一次,我只想在列中添加这些信息。
答案 0 :(得分:2)
这似乎有效:
> df1$complete.farm <- ifelse( !is.na(df1$pig) & !is.na(df1$sheep) & !is.na(df1$cow), 1,0)
> df1
id cat dog sheep cow rabbit pig complete.farm
1 a 5 7 NA 2 5 7 0
2 b 7 NA 6 10 3 NA 0
3 c 6 6 3 8 NA 12 1
4 d 2 13 6 9 2 5 1
5 e 8 2 2 1 4 NA 0
ifelse
是矢量化的,所以你只需要提到第一个参数的条件,其中1表示已确认,0表示未确认。
根据@thelatemail的评论,另一种(更简单的)方式:
df1$col <- as.numeric(complete.cases(df1[c("sheep","cow","pig")]))
> df1
id cat dog sheep cow rabbit pig complete.farm col
1 a 5 7 NA 2 5 7 0 0
2 b 7 NA 6 10 3 NA 0 0
3 c 6 6 3 8 NA 12 1 1
4 d 2 13 6 9 2 5 1 1
5 e 8 2 2 1 4 NA 0 0