[英]R: 'Multiply' dataframe columns of strings
不知道該操作叫什么,谷歌沒有幫助。
假設我有兩個簡單的數據框,如下所示:
df1 <- data.frame(factor1 = c("a", "b", "c"))
df2 <- data.frame(factor2 = c("x", "y", "z"))
> df1
factor1
1 a
2 b
3 c
> df2
factor2
1 x
2 y
3 z
我如何獲得這樣的數據框格式:
factor1 factor2
1 a x
2 a y
3 a z
4 b x
5 b y
6 b z
7 c x
8 c y
9 c z
我認為這種操作可能涉及到乘以數據幀,但這是行不通的:
> df1 * df2
factor1
1 NA
2 NA
3 NA
Warning message:
In Ops.factor(left, right) : ‘*’ not meaningful for factors
這是兩個數據框的笛卡爾乘積 ,如果沒有通用名稱,則可以使用merge
:
merge(df1, df2)
# factor1 factor2
#1 a x
#2 b x
#3 c x
#4 a y
#5 b y
#6 c y
#7 a z
#8 b z
#9 c z
或更明確地:
merge(df1, df2, by=c())
根據?merge
,當沒有要連接的列時,它將返回兩個數據幀的笛卡爾積 :
如果by.x和by.y或長度均為0(長度為零的向量或NULL),則結果r為x和y的笛卡爾積,即dim(r)= c(nrow(x )* nrow(y),ncol(x)+ ncol(y))。
這是expand.grid
另一個選項
Map(expand.grid, factor1 = df1, factor2 = df2)$factor
# factor1 factor2
#1 a x
#2 b x
#3 c x
#4 a y
#5 b y
#6 c y
#7 a z
#8 b z
#9 c z
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.