数据帧中的行阈值

Ban*_*nex 2 r

考虑一个示例数据框:

A   B   C   v
5   4   2   3
7   1   3   5
1   2   1   1
Run Code Online (Sandbox Code Playgroud)

如果元素大于或等于v,我想将行的所有元素设置为1 ,否则为0.示例数据框将导致以下结果:

A   B   C   v
1   1   0   3
1   0   0   5
1   1   1   1
Run Code Online (Sandbox Code Playgroud)

我怎样才能有效地做到这一点?列数会更高,我想要一个解决方案,不要求我单独指定列的名称,而是将它应用于所有列(除外v).

我使用for循环的解决方案太慢了.

akr*_*run 5

我们可以创建一个逻辑矩阵并强制转换为二进制

df1[-4] <- +(df1[-4] >= df1$v)
Run Code Online (Sandbox Code Playgroud)

  • 非常光滑.可以概括`df1 [!names(df1)=='v'] < - +(df1 [!names(df1)=='v']> = df1 $ v)`...因为列数可能会有所不同,以及"v"的位置. (5认同)