如何基于两个向量r求变化指数

如何基于两个向量r求变化指数,r,R,我有两个向量,它们包含如下的索引 index A index B 1 1 1 1 1 1 1 2 1 2 2 1 2 1 现在,我想找到索引A和索引B之间每个组合的长度。因此,在我的示例中,索引A和索引B有三个唯一的组合,我想返回向量中的3,2,2。有人知道如何在没有for循环的情况下实现这一点吗 编辑: 因此,在本例中,有三个独特的组合1 1、1 2和

我有两个向量,它们包含如下的索引

index A  index B
   1        1
   1        1
   1        1
   1        2
   1        2
   2        1
   2        1
现在,我想找到索引A和索引B之间每个组合的长度。因此,在我的示例中,索引A和索引B有三个唯一的组合,我想返回向量中的3,2,2。有人知道如何在没有for循环的情况下实现这一点吗

编辑:
因此,在本例中,有三个独特的组合1 1、1 2和2 1,其中有3个组合1 1、2个组合1 2和2个组合2 1。因此,我想返回3、2、2,您可以将向量粘贴在一起并调用rle

如果需要将结果作为data.frame,请执行以下操作

资料


您可以将向量粘贴在一起,然后调用rle

如果需要将结果作为data.frame,请执行以下操作

资料

这有点骇人听闻:

library(dplyr)
df %>% 
  mutate(Combined=paste0(`index A`,"_",`index B`)) %>% 
  group_by(Combined) %>% 
  summarise(n=n())
# A tibble: 3 x 2
  Combined     n
  <chr>    <int>
1 1_1          3
2 1_2          2
3 2_1          2
按照@kath的建议添加tidyr unite

library(tidyr)
df %>% 
  unite(new_col,`index A`,`index B`,sep="_") %>% 
  add_count(new_col) %>% 
  unique()
数据:

这有点骇人听闻:

library(dplyr)
df %>% 
  mutate(Combined=paste0(`index A`,"_",`index B`)) %>% 
  group_by(Combined) %>% 
  summarise(n=n())
# A tibble: 3 x 2
  Combined     n
  <chr>    <int>
1 1_1          3
2 1_2          2
3 2_1          2
按照@kath的建议添加tidyr unite

library(tidyr)
df %>% 
  unite(new_col,`index A`,`index B`,sep="_") %>% 
  add_count(new_col) %>% 
  unique()
数据:


我想这就是你想要的:

图书馆 df索引A索引B频率 > 1 1 1 3 > 2 1 2 2 > 3 2 1 2 由v0.2.1于2019年3月17日创建


我是从那里得到的。

我想这就是你想要的:

图书馆 df索引A索引B频率 > 1 1 1 3 > 2 1 2 2 > 3 2 1 2 由v0.2.1于2019年3月17日创建

这是我从中得到的。

在R基中,我们可以使用表

在base R中,我们可以使用table

使用dplyr:

使用dplyr:


3是独特的组合。其他两个2表示什么?前3表示1的数量,其他2表示组合的数量12和2,这些是唯一组合数量的频率?是的,这确实是我的意思3表示唯一组合。其他两个2表示什么?前3表示1的数量,其他2表示1 2和2 1的组合数量,这些是唯一组合数量的频率?是的,这确实是我的意思,你可以用unite替换mutate,用count替换summary…@kath我第一次尝试使用unite,但它似乎需要字符数据。奇怪的是,这对我很有效:unitedf,new_col,index A,index B,sep=@kath我添加了这个选项。谢谢。你可以用unite替换mutate,用count替换summary…@kath我第一次尝试使用unite,但它似乎需要字符数据。奇怪的是,这对我很有效:unitedf,new_col,index A,index B,sep=@kath我添加了这个选项。谢谢。这太酷了,但我得到了一个额外的2行,频率为0。@yarnabrina tabledat给出了一个格式,它可以查找所有的组合。如果其中一些不存在,则提供0。如果对substas.data.frametabledat不感兴趣,Freq>0,那就太酷了,但是我得到了一个额外的2行,频率为0。@yarnabrina tabledat提供了一种格式,它可以查找所有的组合。如果其中一些不存在,则提供0。如果不感兴趣,则substas.data.frametabledat,Freq>0
df %>% 
  group_by(`index A`,`index B`) %>% 
  summarise(n=n())
library(tidyr)
df %>% 
  unite(new_col,`index A`,`index B`,sep="_") %>% 
  add_count(new_col) %>% 
  unique()
df<-read.table(text="index A  index B
   1        1
               1        1
               1        1
               1        2
               1        2
               2        1
               2        1",header=T,as.is=T,fill=T)
df<-df[,1:2]
names(df)<-c("index A","index B")
as.data.frame(table(dat))
library(dplyr)
count(dat,!!!dat)$n
# [1] 3 2 2