读取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