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.