楼主: wgx711
1895 7

[问答] 如何获取向量的次序 [推广有奖]

  • 0关注
  • 0粉丝

初中生

90%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
176 点
帖子
6
精华
0
在线时间
28 小时
注册时间
2013-6-22
最后登录
2022-12-20

楼主
wgx711 发表于 2017-3-10 11:11:31 来自手机 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有个向量c(a,a,b,c,d,a,b,e),希望得到向量(1,2,1,1,1,3,2,1),也就是生成同长度向量,标识各个唯一元素abcde的顺序,如何获取。谢谢
二维码

扫码加我 拉你入群

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

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

关键词:ABCD ABC CDE

本帖被以下文库推荐

沙发
lymzwy 发表于 2017-3-10 23:55:32 来自手机
wgx711 发表于 2017-3-10 11:11
有个向量c(a,a,b,c,d,a,b,e),希望得到向量(1,2,1,1,1,3,2,1),也就是生成同长度向量,标识各个唯一元素abc ...
?rank

藤椅
jiangbeilu 学生认证  发表于 2017-3-11 09:03:20
不明白你的意思

板凳
qoiqpwqr 发表于 2017-3-11 10:28:50
最直接的就 用个循环

  1. x <- c("a", "a", "b", "c", "d", "a", "b", "e")
  2. out <- rep(NA, length(x))
  3. unique.val <- unique(x)
  4. n <- length(unique.val)
  5. for (i in 1:n) {
  6.   ind <- which(x %in% unique.val[i])
  7.   out[ind] <- 1:length(ind)
  8. }
复制代码


已有 2 人评分经验 论坛币 收起 理由
李会超 + 60 精彩帖子
jiangbeilu + 10 精彩帖子

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

报纸
wgx711 发表于 2017-3-16 11:54:06 来自手机
lymzwy 发表于 2017-3-10 23:55
?rank
12111321代表abcde在向量aabcdabe中的次序,比如第一个1是a第一次出现,第二个2是a第二次出现,第三个1是b第一次出现……,你说的rank实现不了啊

地板
wgx711 发表于 2017-3-16 11:54:29 来自手机
jiangbeilu 发表于 2017-3-11 09:03
不明白你的意思
12111321代表abcde在向量aabcdabe中的次序,比如第一个1是a第一次出现,第二个2是a第二次出现,第三个1是b第一次出现……

7
zhangyangsmith 发表于 2017-3-16 21:56:33
  1. # Perhaps playing with the indices
  2. x <- c("a", "a", "b", "c", "d", "a", "b", "e")
  3. out <- integer( length(x) )
  4. lapply(
  5.   unique(x),
  6.   function(s)
  7.   {
  8.     indx <- which(x == s)
  9.     out[indx] <<- seq_along(indx)
  10.   }
  11.       )
  12. out
  13. ## [1] 1 2 1 1 1 3 2 1
复制代码
已有 1 人评分论坛币 收起 理由
jiangbeilu + 10 精彩帖子

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

8
cheetahfly 在职认证  发表于 2017-3-16 23:23:14
我也提交解决方法之一:
  1. a <- c("a", "a", "b", "c", "d", "a", "b", "e")
  2. a %>%
  3.     unique() %>%
  4.     sapply(function(x) a == x) %>%
  5.     apply(2, function(x) ifelse(x, cumsum(x), FALSE)) %>%
  6.     rowSums()
复制代码

已有 1 人评分论坛币 收起 理由
jiangbeilu + 10 精彩帖子

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

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

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