r - 从每一行获取索引并与原始 data.frame 合并

标签 r dataframe

我有以下 data.frame

                   user_id 1 2 3 4 5 6 7 8 9
1           54449024717783 0 0 1 0 0 0 0 0 0
2          117592134783793 0 0 0 0 0 1 0 0 0
3          187145545782493 0 0 1 0 0 0 0 0 0
4          245003020993334 0 0 0 0 0 1 0 0 0
5          332625230637592 0 1 0 0 0 0 0 0 0
6          336336752713947 0 1 0 0 0 0 0 0 0

我想要做的是创建一列(并删除 1:9)并在我的值为 1 的地方插入列名,每个用户只包含值为 1 的列,

如果我正在运行以下功能:
rowSums(users_cluster(users_cluster), dims = 1)

它会总结所有的行值,但我需要用列名复制它

最佳答案

基础 R 解决方案:

data.frame(user_id = df[, 1],
           name = which(t(df[, -1] == 1)) %% (ncol(df) - 1))

#           user_id name
# 1  54449024717783    3
# 2 117592134783793    6
# 3 187145545782493    3
# 4 245003020993334    6
# 5 332625230637592    2
# 6 336336752713947    2

关于r - 从每一行获取索引并与原始 data.frame 合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48048475/

相关文章:

r - 将数据框转换为 treeNetwork 兼容列表

python - 来自数据帧的随机样本和剩余部分

python - 如果与最后一行连续出现,则添加值,否则保持相同的值

python - Pandas groupby、累积总和和按类别绘图

python - 代码中的“无效类型比较”

r - dplyr group_by 并汇总具有相同列名的两个 df

r - R中的最大似然

r - 提取直方图 R 后面的数字

r - 如何在 R 中添加特定值的序列

r - 在 R 中进行多条件测试时过滤行