在 R 中组合频率表
Combining frequency tables in R
我有一个向量,其中包含所有测量分子在其各自分子内的分子频率 class。我还有一个向量,其中包含通过变量选择识别的重要分子的每个 class 频率。如何将这两个向量合并到一个数据框中并用 0(在 R 中)填充空频率?
这是一个可行的例子:
full = rep(letters[1:4], 4:7)
fullTable = table(full)
sub = rep(letters[1:2], c(2, 4))
subTable = table(sub)
我希望 table 看起来像:
print(data.frame(Letter=letters[1:4], fullFreq=c(4, 5, 6, 7), subFreq=c(2, 4, 0, 0)))
试试这个(我想你在最后一行的意思是 subTable=table(sub)
):
res<-merge(as.data.frame(fullTable),as.data.frame(subTable),by.x=1,by.y=1,all=TRUE)
colnames(res)<-c("Letter","fullFreq","subFreq")
res[is.na(res)]<-0
与图书馆dplyr
library(dplyr)
full=rep(letters[1:4], 4:7)
sub=rep(letters[1:2], c(2,4))
df <- data.frame(Letter=unique(c(full, sub)))
df <- df %>%
left_join(as.data.frame(table(full)), by=c("Letter"="full")) %>%
left_join(as.data.frame(table(sub)), by=c("Letter"="sub"))
df[is.na(df)] <- 0
df
我有一个向量,其中包含所有测量分子在其各自分子内的分子频率 class。我还有一个向量,其中包含通过变量选择识别的重要分子的每个 class 频率。如何将这两个向量合并到一个数据框中并用 0(在 R 中)填充空频率?
这是一个可行的例子:
full = rep(letters[1:4], 4:7)
fullTable = table(full)
sub = rep(letters[1:2], c(2, 4))
subTable = table(sub)
我希望 table 看起来像:
print(data.frame(Letter=letters[1:4], fullFreq=c(4, 5, 6, 7), subFreq=c(2, 4, 0, 0)))
试试这个(我想你在最后一行的意思是 subTable=table(sub)
):
res<-merge(as.data.frame(fullTable),as.data.frame(subTable),by.x=1,by.y=1,all=TRUE)
colnames(res)<-c("Letter","fullFreq","subFreq")
res[is.na(res)]<-0
与图书馆dplyr
library(dplyr)
full=rep(letters[1:4], 4:7)
sub=rep(letters[1:2], c(2,4))
df <- data.frame(Letter=unique(c(full, sub)))
df <- df %>%
left_join(as.data.frame(table(full)), by=c("Letter"="full")) %>%
left_join(as.data.frame(table(sub)), by=c("Letter"="sub"))
df[is.na(df)] <- 0
df