楼主: ∨、尛涵
1323 4

[问答] 求大佬帮助,如何在r语言中对如c1 c2 c3...这类变量用循环批处理呢? [推广有奖]

  • 0关注
  • 0粉丝

本科生

9%

还不是VIP/贵宾

-

威望
0
论坛币
925 个
通用积分
1.3500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
79 点
帖子
5
精华
0
在线时间
145 小时
注册时间
2018-3-16
最后登录
2023-7-9

楼主
∨、尛涵 发表于 2020-6-8 23:25:24 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
具体细节是这样的:co_c1到co_10共十个变量,需要统计每一行有多少个1。 data.txt (5.83 KB)
QQ截图20200608230434.png
在stata中可用了循环,代码如下:
forvalues i=1/10 {
gen cnt`i'=(co_c`i'==1)
}  //对每个符合co_c`i'==1等于1的赋值为1,并在对应变量 cnt`i'中生成1以保存
egen cnt=rowtotal(cnt1-cnt10) //求和




可以批量生成如下变量,然后通过加总可以统计出每列co_c1到co_10有多少个1
111.png

但是这一操作怎么才能在R语言中实现呢?
R的循环体里好像不能直接用类似
for (i in 1:10) {
data $ cnt`i'<- ifelse(data $ co_c`i'==1,1,0)
}这样的句子,如果我想对原始数据中co_c1、co_c2...者样的变量批处理怎么弄呢?

很头痛的是原始数据中co_c1和co_c2中间还有其他变量
二维码

扫码加我 拉你入群

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

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

关键词:R语言 批处理 forvalues forvalue values

回帖推荐

megapanda 发表于2楼  查看完整内容

沙发
megapanda 发表于 2020-6-9 11:36:45
  1. library(dplyr)

  2. x = read.table("data.txt", header = TRUE, sep = ",")
  3. # 取出需要的列
  4. x1 = x %>% select(paste0("co_c", 1:10))

  5. # 计算每行值为1的元素个数
  6. rowSums(x1 == 1)
复制代码

藤椅
megapanda 发表于 2020-6-9 11:44:17
才看到你需要循环,,不过我觉得 不用循环效率高一点吧
  1. number1 = numeric(nrow(x)) # x 是刚刚的数据
  2. for (k in paste0("co_c", 1:10)) number1 = number1 + (x[[k]] == 1)

  3. number1
复制代码

在R中,data.frame本质上是list,可以用形如x[["co_c1"]]的方式取出某一列的具体元素





板凳
∨、尛涵 发表于 2020-6-9 11:47:04
megapanda 发表于 2020-6-9 11:36
谢谢大佬啦 方法挺好 提供了一种新思路

报纸
∨、尛涵 发表于 2020-6-10 22:59:59
megapanda 发表于 2020-6-9 11:44
才看到你需要循环,,不过我觉得 不用循环效率高一点吧
在R中,data.frame本质上是list,可以用形如 ...
好的 谢谢大佬 其他软件循环用习惯了 一下子还没改过来

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-21 03:26