R 如何在由两个或多个不同csv文件组成的数据框中将两列合并为一个新列?

R 如何在由两个或多个不同csv文件组成的数据框中将两列合并为一个新列?,r,csv,dataframe,multiple-columns,R,Csv,Dataframe,Multiple Columns,我有几个以日期命名的csv文件,对于所有这些文件,我想在每个文件中创建一个新列,其中包含两个其他列的数据,这些列放在一起。然后,我想将它们组合成一个大数据框架,并只选择其中的两列来保存。下面是一个例子: 假设我有两个数据帧: a b c a b c x 1 2 3 x 3 2 1 y 2 3 1 y 2 1 3 然后,我想在每一列中创建一个新的列d: a b c d a b c d x 1 2 3 13 x 3 2 1 31

我有几个以日期命名的csv文件,对于所有这些文件,我想在每个文件中创建一个新列,其中包含两个其他列的数据,这些列放在一起。然后,我想将它们组合成一个大数据框架,并只选择其中的两列来保存。下面是一个例子:

假设我有两个数据帧:

  a b c        a b c
x 1 2 3      x 3 2 1
y 2 3 1      y 2 1 3
然后,我想在每一列中创建一个新的列d:

  a b c  d        a b c  d
x 1 2 3 13      x 3 2 1 31
y 2 3 1 21      y 2 1 3 23
然后我想把它们组合成这样:

  a b c  d
x 1 2 3 13
y 2 3 1 21
x 3 2 1 31
y 2 1 3 23
然后保留a列和d列中的两列,删除其他两列b列和c列:

  a  d
x 1 13
y 2 21
x 3 31
y 2 23
以下是我当前的代码(当我尝试合并两列或仅保留两列时,它不起作用):

f您可以使用
rbind(data1,data2)[,c(1,3)]
。我假设您可以在每个数据帧中创建
cold
,这是一件基本的事情

 data1<-structure(list(a = 1:2, b = 2:3, c = c(3L, 1L), d = c(13L, 21L
    )), .Names = c("a", "b", "c", "d"), row.names = c("x", "y"), class = "data.frame")

 > data1
      a b c  d
    x 1 2 3 13
    y 2 3 1 21   

data2<-structure(list(a = c(3L, 2L), b = c(2L, 1L), c = c(1L, 3L), d = c(31L, 
23L)), .Names = c("a", "b", "c", "d"), row.names = c("x", "y"
), class = "data.frame")

> data2
  a b c  d
x 3 2 1 31
y 2 1 3 23

data3<-rbind(data1,data2)

    > data3
   a b c  d
x  1 2 3 13
y  2 3 1 21
x1 3 2 1 31
y1 2 1 3 23

finaldata<-data3[,c("a","d")]
    > finaldata
   a  d
x  1 13
y  2 21
x1 3 31
y1 2 23
data1 data1
a、b、c、d
x12313
y 2 3 1 21
数据2数据2
a、b、c、d
x 3 2 1 31
y 2 1 3 23
数据3数据3
a、b、c、d
x12313
y 2 3 1 21
x1 3 2 1 31
Y121323
最终数据最终数据
d
x113
y 2 21
x1 3 31
y1 2 23
您可以使用rbind(data1,data2)[,c(1,3)]
来实现这一点。我假设您可以在每个数据帧中创建
cold
,这是一件基本的事情

 data1<-structure(list(a = 1:2, b = 2:3, c = c(3L, 1L), d = c(13L, 21L
    )), .Names = c("a", "b", "c", "d"), row.names = c("x", "y"), class = "data.frame")

 > data1
      a b c  d
    x 1 2 3 13
    y 2 3 1 21   

data2<-structure(list(a = c(3L, 2L), b = c(2L, 1L), c = c(1L, 3L), d = c(31L, 
23L)), .Names = c("a", "b", "c", "d"), row.names = c("x", "y"
), class = "data.frame")

> data2
  a b c  d
x 3 2 1 31
y 2 1 3 23

data3<-rbind(data1,data2)

    > data3
   a b c  d
x  1 2 3 13
y  2 3 1 21
x1 3 2 1 31
y1 2 1 3 23

finaldata<-data3[,c("a","d")]
    > finaldata
   a  d
x  1 13
y  2 21
x1 3 31
y1 2 23
data1 data1
a、b、c、d
x12313
y 2 3 1 21
数据2数据2
a、b、c、d
x 3 2 1 31
y 2 1 3 23
数据3数据3
a、b、c、d
x12313
y 2 3 1 21
x1 3 2 1 31
Y121323
最终数据最终数据
d
x113
y 2 21
x1 3 31
y1 2 23

对象
mydata
是数据帧列表。您可以使用
lappy
更改列表中的数据帧:

lapply(mydata, function(x) "[<-"(x, "c", value = paste0(x$a, x$b)))

lappy(mydata,function(x)”[对象
mydata
是数据帧列表。您可以使用
lappy
更改列表中的数据帧:

lapply(mydata, function(x) "[<-"(x, "c", value = paste0(x$a, x$b)))

lappy(mydata,function(x)”[实际上有很多文件,所以我不想在每个数据帧中手动输入d列。我认为他们最终会寻找
do.call(rbind,…)
由于他们读取文件的方式,他们最终会得到一个
列表
data.frame
s。实际上有很多文件,所以我不想在每个数据帧中手动输入d列。我想他们最终会寻找
do.call(rbind,…)
由于他们读取文件的方式不同,他们最终会得到一个
列表
data.frame
s。