将许多数据框的第一列添加到R中的新数据框

时间:2019-12-16 18:51:19

标签: r dataframe

我有一个17个数据帧的列表。从此列表中,我想为每个数据框“选择”第一列并将其放入新的数据框。所需的结果将是创建几个新的数据框。例如第一个结果数据帧包含所有17个数据帧的所有第一列。第二个结果数据框包含所有17个数据框的第二列。

我将向您展示我在下方想要的东西enter image description here

我真的希望你能帮我这个忙!

欢呼

3 个答案:

答案 0 :(得分:1)

使用package Test.DemoMavenEclipseProject; import org.testng.annotations.Test; import com.relevantcodes.extentreports.LogStatus; import Actions.login_action; import PageObjects.homePage; public class LoginTest extends BasicTest { @Test public void Login() throws Exception { //Create object for Report with filepath //Start the test logger=report.startTest("LoginTest"); //Log the status in report logger.log(LogStatus.INFO, "Login link is displayed"); login_action.Execute(driver); if (homePage.link_Logout(driver).isDisplayed()) logger.log(LogStatus.PASS, "Logged into the site successfully"); else logger.log(LogStatus.FAIL, "Login is unsuccessful"); //End the test Thread.sleep(2000); } }

purrr::map_dfc

答案 1 :(得分:1)

如果我理解正确,那么OP希望将k个数据帧列表中的数据转置为{{1} } data.frames,每个维度n行乘m列。

数据帧列表

m
n

转换
k

进入

lst <- rep(list(mtcars[1:4, 1:5]), 3L)
lst
在这里使用

[[1]] mpg cyl disp hp drat Mazda RX4 21.0 6 160 110 3.90 Mazda RX4 Wag 21.0 6 160 110 3.90 Datsun 710 22.8 4 108 93 3.85 Hornet 4 Drive 21.4 6 258 110 3.08 [[2]] mpg cyl disp hp drat Mazda RX4 21.0 6 160 110 3.90 Mazda RX4 Wag 21.0 6 160 110 3.90 Datsun 710 22.8 4 108 93 3.85 Hornet 4 Drive 21.4 6 258 110 3.08 [[3]] mpg cyl disp hp drat Mazda RX4 21.0 6 160 110 3.90 Mazda RX4 Wag 21.0 6 160 110 3.90 Datsun 710 22.8 4 108 93 3.85 Hornet 4 Drive 21.4 6 258 110 3.08 是因为它会自动命名列。

答案 2 :(得分:1)

因此,您想获取列表中每个数据框的第一列并将其转换为数据框,然后对每个数据框的第二列执行相同操作,依此类推,直到到达每个数据框的最后一列数据框。我假设每个数据框都具有相同的尺寸。

这是一个使用嵌套base函数的lapply解决方案。输出是n data.frame的列表,其中n是数据框中的列数。

在我的示例中,列表包含四个数据帧,每个帧三列。因此,输出包含每个四列的三个数据帧。

lapply(1:ncol(l[[1]]), function(y) as.data.frame(sapply(l, function(x) x[, y])))

[[1]]
  V1 V2 V3 V4
1  1  1  1  1
2  2  2  2  2
3  3  3  3  3
4  4  4  4  4
5  5  5  5  5

[[2]]
  V1 V2 V3 V4
1  2  2  2  2
2  3  3  3  3
3  4  4  4  4
4  5  5  5  5
5  6  6  6  6

[[3]]
  V1 V2 V3 V4
1  3  3  3  3
2  4  4  4  4
3  5  5  5  5
4  6  6  6  6
5  7  7  7  7

样本数据:

l <- list(data.frame(a = c(1:5), b = c(2:6), c = c(3:7)), data.frame(a = c(1:5), b = c(2:6), c = c(3:7)), data.frame(a = c(1:5), b = c(2:6), c = c(3:7)), data.frame(a = c(1:5), b = c(2:6), c = c(3:7)))