R:在保持数据帧的其余特定列应用功能(R: Apply function on specific c

2019-08-02 19:09发布

我想了解如何申请我的数据帧中的特定列功能,而“排除”从我的DF其它列。 例如我想用1000乘以一些特定的列并保留其他的人,因为他们是。

例如使用这样的sapply功能:

    a<-as.data.frame(sapply(table.xy[,1], function(x){x*1000}))

我得到的第一列乘以1000,但没有,我没有在操作中其他列新dataframes。 所以,我的尝试是像这样做:

    a<-as.data.frame(sapply(table.xy, function(x) if (colnames=="columnA") {x/1000} else {x}))

但是这一次没有奏效。

我的解决方法是给双方dataframes使用标识另一行,后来合并旧数据框与新创建得到一个完整的一个。 但我认为必须有一个更好的解决方案。 难道不是吗?

Answer 1:

如果你只想做一个或几个列的计算,你可以使用transform或只是做手工指数是:

# with transfrom:
df <- data.frame(A = 1:10, B = 1:10)
df <- transform(df, A = A*1000)

# Manually:
df <- data.frame(A = 1:10, B = 1:10)
df$A <- df$A * 1000


Answer 2:

下面的代码将应用所需功能的唯一指定列。 我将创建一个简单的数据帧重复的例子。

(df <- data.frame(x = 1, y = 1:10, z=11:20))
(df <- cbind(df[1], apply(df[2:3],2, function(x){x*1000})))

基本上,使用cbind() ,选择您不想要的功能上运行的列,然后使用apply()与目标列所需的功能。



文章来源: R: Apply function on specific columns preserving the rest of the dataframe