我试图在我的数据集中创建一个新列,为每一行提供单个输出,具体取决于预先存在的列的输入.
在此输出列中,如果给定行中的任何输入值为"0" ,则我希望"NA ".否则(如果没有输入为0),我希望该行的输出是输入的唯一值的数量.
我认为解决方案将使用嵌套在apply函数中的ifelse函数,但是我得到一个我不理解的错误.
data$output <- apply(data, 1, function(x) {ifelse(x == 0, NA, length(unique(x)))})
Run Code Online (Sandbox Code Playgroud)
错误
$<-.data.frame(*tmp*,"输出",值= c(3L,3L,3L,3L,:替换有3行,数据有4行)
我不知道为什么替换有3行,因为我认为应用只对我的4行中的每一行执行相同的功能.
我希望能帮助理解在R中进行某个计算所需的语法.
我有这样的数据帧:
a b c
1 1 0
2 1 1
3 1 0
4 2 0
5 2 0
6 3 1
7 3 0
8 3 0
9 4 0
Run Code Online (Sandbox Code Playgroud)
并且我想创建一个值为1的新列"d",如果(且仅当)列"c"中的任何值对于"b" 列中具有相同值的每组行等于1 . 否则(见第4,5和9行)列"d"给出0.
a b c d
1 1 0 1
2 1 1 1
3 1 0 1
4 2 0 0
5 2 0 0
6 3 1 1
7 3 0 1
8 3 0 1
9 4 0 0
Run Code Online (Sandbox Code Playgroud)
这可以用for循环完成吗?如果是这样,任何关于如何写这个的建议都将非常感激.