You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何合并Standing等4列生成Posture数值型新列

解决方案

首先从你给出的示例数据和预期Posture取值,可确认四列状态为互斥关系,每行仅对应一种姿态,编码映射规则如下:

  • 1 = New_Sitting(坐姿)
  • 2 = Cycling(骑行)
  • 3 = Stepping(踏步)
  • 4 = Standing(站立)

方法1:稳妥写法(推荐初学者使用)

使用dplyr包的case_when函数逐行判断姿态,逻辑直观,可自动识别异常行,生成的新列默认就是双精度(dbl)类型:

# 已加载tidyverse的话可跳过这步
library(dplyr)

graph_pre <- graph_pre %>%
  mutate(
    Posture = case_when(
      New_Sitting != 0 ~ 1,
      Cycling != 0 ~ 2,
      Stepping != 0 ~ 3,
      Standing != 0 ~ 4,
      TRUE ~ NA_real_ # 四列全为0的异常行赋值为双精度类型缺失值
    )
  )

方法2:简便写法

观察你的原始数据可发现:四列中每一行有且仅有一列非0,且非0数值刚好和Posture的预期取值完全匹配,因此直接对四列按行求和即可得到结果,代码更简洁:

library(dplyr)

graph_pre <- graph_pre %>%
  mutate(Posture = Standing + Stepping + Cycling + New_Sitting)

结果验证

用你提供的dput测试数据运行上述代码后,前10行的Posture列输出和预期完全一致:

Posture
     <dbl>
 1       2
 2       3
 3       2
 4       1
 5       1
 6       1
 7       3
 8       4
 9       4
10       4

注:如果需要调整Posture列的位置,可以在mutate中添加.after = 列名参数,比如.after = VM就会把新列放在VM列后方。

内容的提问来源于stack exchange,提问作者Richard Michaud Langis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 21:57:23