楼主: 我秃头了
4717 10

[程序分享] R语言如何用循环代码提取特定数据行 [推广有奖]

  • 0关注
  • 0粉丝

已卖:1份资源

高中生

92%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
189 点
帖子
17
精华
0
在线时间
53 小时
注册时间
2020-4-11
最后登录
2022-5-15

楼主
我秃头了 发表于 2020-4-11 11:52:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
R语言新手!!!
大家好,我想请问一个问题,我有一个体重数据集,有的只有一行结果,有的因为重复测量有多行结果,我想提取每个对象最后一次测量的体重数据(只有一个数据的就提取该数据),也就是说这4个对象分别要提取第1/3/2/1次的测量数据,该如何写循环代码??循环真是太难了。十分捉急,麻烦大家指点,谢谢~~


id      date               weight       times
1      2019-10-12       1700        1
2      2019-10-10       1900        1
2      2019-10-11       1970        2
2      2019-10-12       2000        3
3      2018-4-20         2500        1
3      2018-4-21         2600        2
4      2020-3-19         2430        1

二维码

扫码加我 拉你入群

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

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

关键词:R语言 如何用 Weight Times weigh

回帖推荐

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

下次提问题请附上数据实例

沙发
felixzhao123 发表于 2020-4-11 14:08:36
下次提问题请附上数据实例

  1. library(tidyverse)
  2. data <- data.frame(
  3.   id=c(1,2,2,2,3,3,4),
  4.   date=c("2019-10-12","2019-10-10","2019-10-11","2019-10-12","2018-4-20","2018-4-21","2020-3-19"),
  5.   weight=c(1700,1900,1970,2000,2500,2600,2430),
  6.   times=c(1,1,2,3,1,2,1)
  7. )

  8. data %>%
  9.   group_by(id) %>%
  10.   top_n(n = 1,wt = times)
复制代码

藤椅
drunkfish69 发表于 2020-4-11 14:39:43
  1. library(tidyverse)

  2. x <- tribble(
  3.   ~id,      ~date,               ~weight,       ~times,
  4.   1,      '2019-10-12',       1700,        1,
  5.   2,      '2019-10-10',       1900,        1,
  6.   2,      '2019-10-11',       1970,        2,
  7.   2,      '2019-10-1',       2000,        3,
  8.   3,      '2018-4-20',         2500,        1,
  9.   3,      '2018-4-21',         2600,        2,
  10.   4,      '2020-3-19',         2430,        1
  11. )
  12. x1 <- x %>% count(id)
  13. x1 %>%
  14.   left_join(x, by = c('id'='id', 'n'='times'))
复制代码

板凳
我秃头了 发表于 2020-4-11 16:46:26
felixzhao123 发表于 2020-4-11 14:08
下次提问题请附上数据实例
我用了您的代码后,发现不知道什么原因,最后结果例数会少,id数目都不对了,有一些数据重复测量几十次的,但是运行结果却取第9次的测量数据,达不到取最后一次测量数据的目的,我也不知道什么原因,对这个函数其实我并不太熟悉。

报纸
我秃头了 发表于 2020-4-11 16:48:28
drunkfish69 发表于 2020-4-11 14:39
我用了您的代码后,结果只返回id和times两列结果,没有date和weight这两列数据

地板
drunkfish69 发表于 2020-4-11 17:05:48
我秃头了 发表于 2020-4-11 16:48
我用了您的代码后,结果只返回id和times两列结果,没有date和weight这两列数据
  1. > library(tidyverse)
  2. > x <- tribble(
  3. +   ~id,      ~date,               ~weight,       ~times,
  4. +   1,      '2019-10-12',       1700,        1,
  5. +   2,      '2019-10-10',       1900,        1,
  6. +   2,      '2019-10-11',       1970,        2,
  7. +   2,      '2019-10-1',       2000,        3,
  8. +   3,      '2018-4-20',         2500,        1,
  9. +   3,      '2018-4-21',         2600,        2,
  10. +   4,      '2020-3-19',         2430,        1
  11. + )
  12. > x1 <- x %>% count(id)
  13. > x1 %>%
  14. +   left_join(x, by = c('id'='id', 'n'='times'))
  15. # A tibble: 4 x 4
  16.      id     n date       weight
  17.   <dbl> <dbl> <chr>       <dbl>
  18. 1     1     1 2019-10-12   1700
  19. 2     2     3 2019-10-1    2000
  20. 3     3     2 2018-4-21    2600
  21. 4     4     1 2020-3-19    2430
复制代码
没问题啊!?要不把你的代码贴上来看看。

7
我秃头了 发表于 2020-4-12 10:54:17
drunkfish69 发表于 2020-4-11 17:05
没问题啊!?要不把你的代码贴上来看看。
test是我的一个数据集,运行之后会报错,能帮我看一下问题出在哪里吗?
as_tibble(test)

x1 <- test %>% count(B.ID)
x1 %>%
  left_join(test, by = c('B.ID'='B.ID', 'n'='times'))
Error: Can't join on 'times' x 'n' because of incompatible types (character / integer)

8
drunkfish69 发表于 2020-4-12 10:59:03
我秃头了 发表于 2020-4-12 10:54
test是我的一个数据集,运行之后会报错,能帮我看一下问题出在哪里吗?
as_tibble(test)
Error: Can't join on 'times' x 'n' because of incompatible types (character / integer)
两个字段属性不同,一个是字符,另一个是整数。看看把字符的那个字段转换成整形。

9
我秃头了 发表于 2020-4-12 11:06:33
drunkfish69 发表于 2020-4-12 10:59
两个字段属性不同,一个是字符,另一个是整数。看看把字符的那个字段转换成整形。
我的代码没有变,想从测试数据集换到要分析的数据集,就出了一个奇怪的问题,在console里看结果没问题,但是想在environment里打开x2就只剩下B.ID和n两个变量了,再返回测试数据集也是这样,这是什么情况呢?
as_tibble(test)
x2 <- test %>% count(B.ID)
x2 %>%
left_join(test, by = c('B.ID'='B.ID', 'n'='times'))

# A tibble: 4 x 4
    B.ID     n date       messages
   <dbl> <dbl> <chr>      <chr>   
1 121    23 2018-04-30 1730   
2 809     1 2018-06-05 3050   
3 638     8 2018-08-25 2400   
4 763     1 2018-11-21 2850   
> View(x2)


10
我秃头了 发表于 2020-4-12 11:44:17
drunkfish69 发表于 2020-4-12 10:59
两个字段属性不同,一个是字符,另一个是整数。看看把字符的那个字段转换成整形。
我的代码没有变,换到要正式分析的数据机却出现了一个奇怪的问题,就是在console里看结果是没问题的,但在environment里打开x1看结果却只剩下id 和 n两个变量了,这是什么情况呢
as_tibble(weight.messages)

x1 <- weight.messages %>% count(B.ID)
x1 %>%
  left_join(weight.messages, by = c('B.ID'='B.ID', 'n'='times'))
# A tibble: 1,963 x 4
     B.ID     n date       messages
    <dbl> <dbl> <chr>      <chr>   
1 731    19 2017-10-15 2200   
2 216    24 2017-10-23 2023   
3 276     9 2017-10-10 2020   
4 727    10 2017-10-12 2240   
5
6
7
8
9
10
# ... with 1,953 more rows

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

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