我有一个数据帧,每行一个值,可能在几列之一.如何创建包含1所在列号的单个列?我想用dplyr做这个,但是我能想到的唯一方法涉及到循环,这看起来非常不像.
df<-data.frame(
a=c(1,0,0,0),
b=c(0,1,1,0),
c=c(0,0,0,1)
)
a b c
1 1 0 0
2 0 1 0
3 0 1 0
4 0 0 1
Run Code Online (Sandbox Code Playgroud)
目标:
1 1
2 2
3 2
4 3
Run Code Online (Sandbox Code Playgroud)
这里不需要dplyr.这max.col()是为了什么.由于行中的所有其他值都将为零,因此max.col()将为我们提供1出现的列号.
max.col(df)
# [1] 1 2 2 3
Run Code Online (Sandbox Code Playgroud)
如果你需要一个专栏,那么
data.frame(x = max.col(df))
# x
# 1 1
# 2 2
# 3 2
# 4 3
Run Code Online (Sandbox Code Playgroud)
或者cbind()或者matrix()矩阵.
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |