在dataframe的每个原始行旁边添加新行,每个新行添加指定列的相同值

在dataframe的每个原始行旁边添加新行,每个新行添加指定列的相同值,r,R,我有一个5列的数据框:address(公交车站的位置)、line1、line2、line3和line4(通过该车站的公交线路) 我想做的是将这个数据帧转换成某种“长”格式,只包含两个变量:地址和行。我的意思是,例如,对于“string1”地址,我希望它显示4次(在四行中,因为有四条线路总线通过该站点),而不是只显示一次(只有一行),并且在每一行中,我希望它在“line”列中有一条线路通过它。“string2”地址停止也一样,但是由于这个停止只有两行通过它,我希望它只重复两次,第一行列中有“19I

我有一个5列的数据框:address(公交车站的位置)、line1、line2、line3和line4(通过该车站的公交线路)

我想做的是将这个数据帧转换成某种“长”格式,只包含两个变量:地址和行。我的意思是,例如,对于“string1”地址,我希望它显示4次(在四行中,因为有四条线路总线通过该站点),而不是只显示一次(只有一行),并且在每一行中,我希望它在“line”列中有一条线路通过它。“string2”地址停止也一样,但是由于这个停止只有两行通过它,我希望它只重复两次,第一行列中有“19Ida”,第二行列中有“12Reg”

所以我想要的结果是这样的:

Address      line       
string1     10Ida        
string1     12Reg
string1     13Ida
string1     15Reg
string2     19Ida        
string2     12Reg        
string3     10Ida       
string3     12Reg         
string3     13Ida   
string4     24Reg
string4     12Reg
string5     14Ida
string6     10Ida
string6     12Reg
string6     13Ida
string6     15Reg     
我该怎么做?注意:真正的数据帧有超过1.500个不同的地址,有些地址有超过5行通过它,所以我需要一个有效的方法


谢谢。

我们可以再使用
pivot\u

library(tidyr)
pivot_longer(df1, cols = -Address, values_to = 'line', values_drop_na = TRUE)

或使用
melt

library(data.table)
melt(setDT(df1), id.var = 'Address', value.name = 'line', na.rm = TRUE)
另外,重塑::melt(df1,id=“Address”,na.rm=TRUE)
library(data.table)
melt(setDT(df1), id.var = 'Address', value.name = 'line', na.rm = TRUE)