楼主: 仍陋袭简424
1876 2

[问答] 怎么对数据框多列数据进行有条件地加 [推广有奖]

  • 0关注
  • 0粉丝

本科生

6%

还不是VIP/贵宾

-

威望
0
论坛币
97 个
通用积分
13.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
109 点
帖子
4
精华
0
在线时间
145 小时
注册时间
2017-6-15
最后登录
2024-12-18

楼主
仍陋袭简424 发表于 2019-6-8 18:11:05 来自手机 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问我有20列数据,都是数值,其中有缺失,想要对每列大于它的列均值的数标*,该怎么做比较好。对于一列我可以用for循环,另起一列存放带*的数据。
二维码

扫码加我 拉你入群

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

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

关键词:数据框 for循环 For 怎么做

沙发
jiangbeilu 学生认证  发表于 2019-6-9 23:01:34
给你一列的数据作为参考:
  1. set.seed(1)
  2. test <- sample(c(1:20,NA),100,replace = T)
  3. # 构建辅助变量test2
  4. test2 <- rep(NA,length(test))
  5. ## 用mean求值,记得加上na.rm=T,这个不会算NA的,不加的话,你算出来就是NA
  6. ## mean(test) ## 返回结果是NA
  7. test2[test>mean(test,na.rm=T)] <- "*"
  8. test2
复制代码
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
drunkfish69 发表于 2019-6-13 10:08:14
楼上的代码,结果好像有问题
  1. > test2
  2.   [1] NA  NA  NA  NA  "*" "*" "*" "*" NA  NA  NA  NA  "*" NA  NA  NA  "*" NA
  3. [19] NA  NA  "*" NA  NA  NA  NA  "*" "*" NA  "*" NA  NA  NA  NA  NA  "*" "*"
  4. [37] "*" "*" NA  NA  "*" NA  NA  "*" NA  NA  "*" NA  "*" "*" "*" NA  NA  "*"
  5. [55] "*" NA  NA  "*" NA  NA  NA  "*" "*" NA  "*" NA  "*" "*" "*" NA  "*" "*"
  6. [73] "*" NA  "*" NA  NA  "*" NA  NA  "*" "*" "*" "*" NA  NA  "*" NA  NA  NA
  7. [91] "*" "*" NA  "*" NA  "*" NA  NA  NA  NA
复制代码
我的尝试
  1. library(tidyverse)

  2. idx_means <- vector("double", length(mtcars))
  3. idx_means <- mtcars %>%
  4.   map_dbl(mean, na.rm = TRUE)

  5. cars <- as_tibble(mtcars)

  6. for (i in 1:length(idx_means)) {
  7.   for (j in 1:nrow(cars)) {
  8.     if (cars[j, i] > idx_means[i]) {
  9.       cars[j, i] <- "*"
  10.     }
  11.   }
  12. }
复制代码
结果
  1. > cars
  2. # A tibble: 32 x 11
  3.    mpg   cyl   disp  hp    drat  wt    qsec  vs    am    gear  carb
  4.    <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
  5. 1 *     6     160   110   *     2.62  16.46 0     *     *     *   
  6. 2 *     6     160   110   *     2.875 17.02 0     *     *     *   
  7. 3 *     4     108   93    *     2.32  *     *     *     *     1   
  8. 4 *     6     *     110   3.08  3.215 *     *     0     3     1   
  9. 5 18.7  *     *     *     3.15  *     17.02 0     0     3     2   
  10. 6 18.1  6     225   105   2.76  *     *     *     0     3     1   
  11. 7 14.3  *     *     *     3.21  *     15.84 0     0     3     *   
  12. 8 *     4     146.7 *     *     3.19  *     *     0     *     2   
  13. 9 *     4     140.8 *     *     3.15  *     *     0     *     2   
  14. 10 19.2  6     167.6 123   *     *     *     *     0     *     *   
  15. # … with 22 more rows
复制代码



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

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