簡體   English   中英

R:“乘以”字符串的數據框列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM