簡體   English   中英

一次對多列數據框進行操作

[英]doing operations on multiple columns of data frame at once

假設我有一個 dataframe 列表,我想同時對第 1,2 和 4 列進行一些操作,同時對第 3,5 和 6 列進行一些其他操作。

假設我想將第 1,2,4 列乘以 2,將第 3,5 和 6 列乘以 3。

使用 lapply 我可以一次執行以下操作之一,但不能同時執行以下操作:

A<- apply(list, function(x) {2*X[,c(1,2,4)] 3*X[,c(3,5,6)]}) 

這會給出錯誤消息,例如無法識別的數字常量。 我怎樣才能同時完成它們。 這是因為如果我執行其中之一,我將返回 1、2、4 之類的列。

我們可以在乘以它們的常數后使用cbind組合兩個子集。

lapply(list_df, function(df) cbind(df[c(1, 2, 4)] * 2, df[c(3, 5, 6)] * 3))

#[1]]
#  a  b  d  c  e  f
#1 2  8 20 21 15 18
#2 4 10 22 24 18 21
#3 6 12 24 27 21 24

#[[2]]
#  a  b  d  c  e  f
#1 2  8 20 21 15 18
#2 4 10 22 24 18 21
#3 6 12 24 27 21 24

數據

df <- data.frame(a = 1:3, b = 4:6, c = 7:9, d = 10:12, e = 5:7, f = 6:8)
list_df <- list(df, df)

為什么不讓事情變得簡單並保留列順序呢? 下面假設數據框只有6列,而且都需要相乘。

l <- list(df,df)
lapply(l, function(x) x*c(2,2,3,2,3,3))

Output

[[1]]
  X1 X2 X3 X4 X5 X6
   2  4  9  8 15 18

[[2]]
  X1 X2 X3 X4 X5 X6
  2  4  9  8 15 18

數據

df <- data.frame(1,2,3,4,5,6)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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