读取r中的数据集并更改格式
我有一套数据给我们。它有纬度、经度和降雨量。其格式如下:读取r中的数据集并更改格式,r,reshape,R,Reshape,我有一套数据给我们。它有纬度、经度和降雨量。其格式如下: lon -124 -125 -126 -127 -128 lat 45 120 110 NA 230 145 44 NA 130 205 240 195 43 120 110 NA 235 185 42 170 140 204 NA 155 这是数据集的链接: 我想使用R将其转换为此格式:
lon -124 -125 -126 -127 -128
lat 45 120 110 NA 230 145
44 NA 130 205 240 195
43 120 110 NA 235 185
42 170 140 204 NA 155
这是数据集的链接:
我想使用R将其转换为此格式:
precipitation lat lon
120 45 -124
110 45 -125
NA 45 -126
您可能需要使用“重塑2”软件包-
library(reshape2)
df<- read.table(textConnection('
lat -124 -125 -126 -127 -128
45 120 110 NA 230 145
44 NA 130 205 240 195
43 120 110 NA 235 185
42 170 140 204 NA 155'), header = TRUE)
df2 <- melt(df, id.vars = 'lat')
library(重塑2)
df我不是超级重塑2
用户,但这正是适合我的
library(reshape2)
a <- read.csv("~/Documents/Pmaxupscaled.csv")
# Convert to matrix
a <- as.matrix(a)
# Replace row names with the values from the first column
dimnames(a)[[1]] <- a[, 1]
# Drop the first column
a <- a[, -1]
# Melt the matrix into a data frame.
b <- melt(a, varnames = c("Lat", "Lon"))
# Get rid of "X."
b$Lon <- gsub("X\\.", "", b$Lon)
# Format longitude as negative number
b$Lon <- as.numeric(b$Lon)
b$Lon <- -1 * b$Lon
# Rename precipitation column
names(b)[3] <- "precipitation"
library(重塑2)
a由于答案超过了“重塑2”的最大值,因此在基数R中有一个选项:
a <- read.csv("path/to/Pmaxupscaled.csv", check.names = FALSE)
out <- cbind(lat = a[, 1], setNames(stack(a[-1]), c("precip", "lon")))
head(out)
# lat precip lon
# 1 45.0 77.63 -105
# 2 42.5 76.15 -105
# 3 40.0 72.18 -105
# 4 37.5 78.60 -105
# 5 35.0 80.93 -105
# 6 32.5 87.29 -105
tail(out)
# lat precip lon
# 99 40.0 136.05 -75
# 100 37.5 NA -75
# 101 35.0 NA -75
# 102 32.5 NA -75
# 103 30.0 NA -75
# 104 27.5 NA -75
a@Cordoremifa;我使用了您的命令行,将数据放在“”中,因为这只是我数据的一部分,我运行了它,并得到了以下错误:扫描错误(文件、内容、nmax、sep、dec、quote、skip、nlines、na.strings,:第1行没有2个元素错误消息似乎很清楚,数据中的第1行有不同数量的元素(列)其他行似乎有2个值。如果你看我在“”中放的内容,你会发现我没有完全复制粘贴你的数据。你需要做类似的事情。是的,我做了完全相同的事情。我使用记事本复制,然后粘贴到R中。然后变量之间没有空格,我认为这就是原因。如何复制nd粘贴数据?让我从另一个方向处理这个问题,您能将数据集转换为我开始使用的格式(手动或自动)吗?这是指向数据的链接:@Ananda Mahto;它有.csv格式。@Ananda Mahto;我添加了dput格式。dput
条目似乎不完整,在我这边不起作用。@Ananda Mahto;我添加了数据集的链接。非常感谢。它很有效。您能告诉我如何用“NA”删除这些行吗价值观?@user3000796,从“那太好了,阿南德,再次感谢。
a <- read.csv("path/to/Pmaxupscaled.csv", check.names = FALSE)
out <- cbind(lat = a[, 1], setNames(stack(a[-1]), c("precip", "lon")))
head(out)
# lat precip lon
# 1 45.0 77.63 -105
# 2 42.5 76.15 -105
# 3 40.0 72.18 -105
# 4 37.5 78.60 -105
# 5 35.0 80.93 -105
# 6 32.5 87.29 -105
tail(out)
# lat precip lon
# 99 40.0 136.05 -75
# 100 37.5 NA -75
# 101 35.0 NA -75
# 102 32.5 NA -75
# 103 30.0 NA -75
# 104 27.5 NA -75
library(reshape2)
a <- read.csv("path/to/Pmaxupscaled.csv", check.names = FALSE)
names(a)[1] <- "lat"
out <- melt(a, id.vars="lat", value.name="precip", variable.name="lon")
head(out)
# lat precip lon
# 1 45.0 77.63 -105
# 2 42.5 76.15 -105
# 3 40.0 72.18 -105
# 4 37.5 78.60 -105
# 5 35.0 80.93 -105
# 6 32.5 87.29 -105