楼主: Michael1941
5180 5

[问答] R中如何对数据框中部分列做相同的处理 [推广有奖]

  • 0关注
  • 1粉丝

已卖:61份资源

硕士生

57%

还不是VIP/贵宾

-

威望
0
论坛币
1087 个
通用积分
2.9700
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
960 点
帖子
73
精华
0
在线时间
222 小时
注册时间
2009-2-28
最后登录
2023-4-19

楼主
Michael1941 发表于 2017-12-12 11:56:37 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在一个有1000+个变量的数据框中,如何对其中的以t5_开头的变量(一共有23个,t5_1-t5_23)都进行*25-100操作?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据框

回帖推荐

cheetahfly 发表于3楼  查看完整内容

或者:

沙发
慕目穆木 学生认证  发表于 2017-12-12 17:55:27
你可能得需要将这个变量名拆分一下了拆分成 "t5" ,"_1"两个变量然后再对他们进行批量处理

比如
> substr("abcdef", 2, 4)                #从字符串“abcdef”中提取出第2到4个位置上的字符
[1] "bcd"

藤椅
cheetahfly 在职认证  发表于 2017-12-12 21:52:02
  1. library(tidyverse)
  2. dat %>%
  3.   gather(temp_type, target_value, starts_with("t5_")) %>%
  4.   mutate(target_value = target_value * 25 - 100) %>%
  5.   spread(temp_type, target_value)
复制代码
或者:
  1. library(tidyverse)
  2. dat1 <- select(dat, -starts_with("t5_"))
  3. dat %>%
  4.   select(starts_with("t5_")) %>%
  5.   sapply(function(x) x * 25 - 100) %>%
  6.   cbind(dat1)
复制代码

板凳
Michael1941 发表于 2017-12-12 22:27:17
cheetahfly 发表于 2017-12-12 21:52
或者:
多谢指教,我也通过grep()函数实现了,不过你的方法值得学习,再次感谢

报纸
cheetahfly 在职认证  发表于 2017-12-15 16:40:58
Michael1941 发表于 2017-12-12 22:27
多谢指教,我也通过grep()函数实现了,不过你的方法值得学习,再次感谢
sorry,对dplyr包掌握得不够熟练,其实以下一条语句就可以了:
dplyr::mutate_at(dat, vars(starts_with("t5_")), function(x) x * 25 - 100)

地板
Michael1941 发表于 2017-12-18 09:50:23
cheetahfly 发表于 2017-12-15 16:40
sorry,对dplyr包掌握得不够熟练,其实以下一条语句就可以了:
dplyr::mutate_at(dat, vars(starts_with ...
再次感谢,我是初学,什么都不会

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-9 17:40