如何基于两个向量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