R में साधारण सुविधाओं के ऑब्जेक्ट से डेटा.फ्रेम निकालना


43

क्या एक साधारण सुविधाओं वाली वस्तु से ज्यामिति स्तंभ को छोड़कर सब कुछ निकालने का एक sf-native (यानी "सही") तरीका है? यह काम

df <- dplyr::select(as.data.frame(sf), -geometry)

लेकिन select( , -geometry)कदम अनावश्यक लगता है। इसके अलावा, यह ज्यामिति विशेषताओं को नहीं हटाता है।


2
इसके अलावा संभव हैdf <- st_drop_geometry(df)
radek

@ ब्रैड भी CRAN संस्करण में?
ईविन्धमर्स

मैं ऐसा मानती हूं। वर्तमान 0.7-2में क्रैन पर। और यह यहाँ है rdocumentation.org/packages/sf/versions/0.7-2/topics/…
radek

जवाबों:


36

के लिए st_geometryसंपत्ति सेट करें NULL

library(sf)
nc <-  st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE)
class(nc)
## [1] "sf"         "data.frame"
st_geometry(nc) <- NULL
class(nc)
## [1] "data.frame"

इसके अलावा (हालांकि यह नहीं हटाएगा attr(nc, "sf_column"):

nc <-  st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE)
as.data.frame(nc)

मैंने पहले भी कोशिश की nc$geometry <- NULLथी, लेकिन आपके सुझाव ने चाल चली। धन्यवाद।
ईविन्धमर्स

क्या इसका कोई पाइप संस्करण है? sf %>% mutate(geometry = NULL)काम नहीं करता
obrl_soil

2
शायद इसे "जियोम" कहा जाता है न कि "ज्योमेट्री"? (यह निरंतर होने वाला नहीं है)। दूसरा तरीका है `x%>% st_set_geometry (NULL)`। इनमें से कोई भी देव में हो सकता है, न कि सीआरएएनएन हालांकि मैं ध्यान से जांच नहीं कर रहा हूं कि मैं स्थानीय स्तर पर कहां हूं।
mdsumner

@ मंदसुंदर एक महान, अप्रत्यक्ष, बिंदु बनाता है। किसी को वास्तव में विधि लिखना है, यह जादू से नहीं होता है। चूँकि s R में एक नया ऑब्जेक्ट क्लास है, इसलिए कई तरीके उपलब्ध नहीं हो सकते हैं या उम्मीद के मुताबिक व्यवहार नहीं कर सकते हैं।
जेफरी इवांस

34

यहां एक sf ऑब्जेक्ट को एक साधारण डेटा फ़्रेम में बिना ज्यामिति के बदलने के लिए एक पाइप करने योग्य दृष्टिकोण है। st_set_geometry()फ़ंक्शन का उपयोग करें :

library(sf)
nc <-  st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE)
class(nc)
#> [1] "sf"         "data.frame"

nc_df <- nc %>% st_set_geometry(NULL)
class(nc_df)
#> [1] "data.frame"

संपादित करें

पर 2018/11/16 , st_drop_geometry()एस एफ, जो इस स्पष्ट करता है को जोड़ा गया है:

nc_df2 <- nc %>% st_drop_geometry()
class(nc_df2)
#> [1] "data.frame"

-5
df <- df[,-geometry_column]

या सिर्फ df[,-geometry_column]अगर आप नई वस्तु नहीं बनाना चाहते हैं

कहा पे:

df - अपनी वस्तु

geometry_column - वह कॉलम जहाँ ज्यामिति संग्रहीत होती है


मेरे अंत पर काम नहीं करता है। क्या आपने इसका परीक्षण किया है? मैं करता हूँ sf[, -sf$geometry]और मिलता हैError in Ops.sfc(grid.sf$geometry) : argument "e2" is missing, with no default
eivindhammers

SF [, - ज्यामिति] sf [, - sf $ ज्यामिति] आज़माएं
ami

sf[, -geometry]के साथ विफल रहता है Error in -"geometry" : invalid argument to unary operator। के साथ पुन: पेशdata(meuse, package = "sp"); meuse_sf <- st_as_sf(meuse); meuse_sf[, -geometry]
eivindhammers

5
यह किसी भी तरह से काम नहीं करता है। शायद यह कुछ पहले के sfपैकेज में किया था , लेकिन अब यह नहीं है। sfडेटा फ़्रेम के सभी सबसेटिंग ज्यामिति कॉलम को संरक्षित करते हैं। कृपया मिटा दे।
Spacedman
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.