通过在附加列中添加详细信息来标识R中包含完整数据的行

时间:2015-05-25 22:37:45

标签: r

对于示例数据框:

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。

如果有人能就此给我一些建议,我会非常感激。我通常使用完整的案例来对我的数据帧进行子集化,但这一次,我只想在列中添加这些信息。

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