楼主: 0029948968
964 3

[问答] 请问如何把这一列非NA的数字替换为有顺序的值 [推广有奖]

  • 0关注
  • 0粉丝

大专生

80%

还不是VIP/贵宾

-

威望
0
论坛币
860 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
158 点
帖子
8
精华
0
在线时间
119 小时
注册时间
2019-1-31
最后登录
2021-8-8

楼主
0029948968 发表于 2019-11-6 14:49:51 |AI写论文
300论坛币
我想按照ID分组,每个ID对应的session都重新转换,将session列非NA的数字进行转换,转换为1,2,3,4......这样排列的顺序,如图所示:
转换前 转换后


所以我尝试使用dplyr:
  1. out <- data %>%
  2.   group_by(id) %>%
  3.   mutate(session[which(session  != "NA")] = 1:length(which(session != "NA")))
复制代码
但是报错显示:
Error: unexpected '=' in:
"  group_by(id) %>%
  mutate(session[which(session  %in% 1:200)] ="


请问我应该如何完成转换?

最佳答案

沙发
skyfx 发表于 2019-11-6 14:49:52
  1. library(dplyr)

  2. data.sort <- data %>%
  3.   na.omit() %>%
  4.   group_by(id) %>%
  5.   mutate(session.new = 1:length(session))

  6. out <- data %>%
  7.   left_join(data.sort) %>%
  8.   select(-session) %>%
  9.   rename(session = new.session)
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 30 + 3 + 3 + 3 精彩帖子

总评分: 论坛币 + 30  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

藤椅
skyfx 发表于 2019-11-6 16:01:18
你构成1、2、3、4是按什么来排序呀?总得有个列来作为排序标准。

板凳
0029948968 发表于 2019-11-6 16:11:01
skyfx 发表于 2019-11-6 16:01
你构成1、2、3、4是按什么来排序呀?总得有个列来作为排序标准。
就是这个ID下的session分了多少个组,就从1开始排序多少组。比如这个id为825010211307012的session有6组,就把原始列的1,7,14,15,17,18转换为1,2,3,4,5,6

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-8 05:04