我有一个数据集,日期在第一列,然后我的数据在接下来的几列.我希望在不影响DATE列的情况下对数据执行反正切变换.我一直将此作为函数并使用Apply进行操作,但我想不出如何让它在不丢失Date列的情况下为转换后的数据创建新的数据帧.这是我的代码:

df <- read.csv("2018data.csv")

fun_asin <- function(x){
return (asin(x/100))}

df <- data.frame(lapply(df[ ,2:4],fun_asin))

这将返回一个新的数据帧,其中包含转换后的数据,但不包含日期列.我如何更改它才能保持列不被更改?

以下是我的数据集的子集的dput:

df <- structure(list(Date.Time = c("9/1/18 12:00", "9/2/18 0:00", "9/2/18 12:00", 
"9/3/18 0:00", "9/3/18 12:00", "9/4/18 0:00", "9/4/18 12:00", 
"9/5/18 0:00", "9/5/18 12:00", "9/6/18 0:00", "9/6/18 12:00", 
"9/7/18 0:00", "9/7/18 12:00", "9/8/18 0:00", "9/8/18 12:00", 
"9/9/18 0:00", "9/9/18 12:00", "9/10/18 0:00", "9/10/18 12:00", 
"9/11/18 0:00"), Narraguagus.R = c(26.38297872, 29.79214781, 
25.06265664, 29.27400468, 29.23433875, 31.89066059, 31.97115385, 
30.71748879, 32.13429257, 27.20930233, 30.21390374, 28.07017544, 
27.68361582, 29.76878613, 31.65680473, 28.61952862, 30.42168675, 
30.37634409, 24.56896552, 24.56140351), Bluehill.R = c(69.48775056, 
73.01401869, 68.46071044, 70.51886792, 73.29545455, 69.72972973, 
68.95459345, 70.28451001, 65.48076923, 63.41929322, 64.20454545, 
66.23246493, 68.88412017, 73.6196319, 75.06112469, 76.06318348, 
76.05839416, 72.01591512, 69.98556999, 69.828722), Jericho.R = c(4.761904762, 
0, 0, 7.692307692, 0, 0, 0, 0, 0, 0, 0, 5.882352941, 0, 0, 0, 
0, 0, 5.882352941, 0, 3.448275862)), row.names = c(NA, 20L), class = "data.frame")

推荐答案

使用基数R,您只需在输出中手动重新包含该列

df_out <- data.frame(df[1], lapply(df[ ,2:4],fun_asin))

您可以将其更一般地与

cols_to_transform <- 2:4
df_out <- data.frame(
  df[setdiff(seq_along(df), cols_to_transform)], 
  lapply(df[cols_to_transform], fun_asin)
)

对于dplyr,您可以使用across将函数仅应用于列的子集

library(dplyr)
df_out <- mutate(df, across(-1, fun_asin))

R相关问答推荐

DT::可数据的正规表达OR运算符问题

混淆矩阵,其中每列和等于1

如果索引重复,聚合xts核心数据

如何在ggplot 2线性图的每个方面显示每个组的误差条?

通过使用str_detect对具有相似字符串的组进行分组

在数组索引上复制矩阵时出错

可以替代与NSE一起使用的‘any_of()’吗?

R spatstat Minkowski Sum()返回多个边界

如何通过匹配R中所有可能的组合来从宽到长旋转多个列?

有没有办法使用ggText,<;Sub>;&;<;sup>;将上标和下标添加到同一元素?

用两种 colored颜色 填充方框图

为什么我使用geom_density的绘图不能到达x轴?

识别连接的子网(R-igraph)

如何使用字符串从重复的模式中提取多个数字?

ggplot R:X,Y,Z使用固定/等距的X,Y坐标绘制六边形热图

使用ifElse语句在ggploy中设置aes y值

如何使用包metaviz更改标签的小数位数?

分隔日期格式为2020年7月1日

在使用ggplot2的情况下,如何在使用coord_trans函数的同时,根据未转换的坐标比来定位geom_瓷砖?

使用nls()函数的非线性模型的半正态图