আর এ সাধারণ বৈশিষ্ট্যগুলি থেকে ডেটা.ফ্রেম বের করা


43

কোনও সাধারণ বৈশিষ্ট্যযুক্ত বস্তু থেকে জ্যামিতি কলাম ব্যতীত সমস্ত কিছু বের করার কোনও এসফ-নেটিভ (অর্থাত্ "সঠিক") উপায় আছে কি? এইটা কাজ করে

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

তবে select( , -geometry)পদক্ষেপটি অপ্রয়োজনীয় বোধ করে। এছাড়াও, এটি জ্যামিতির বৈশিষ্ট্যগুলি সরিয়ে দেয় না।


2
এছাড়াও সম্ভবdf <- st_drop_geometry(df)
রাদেক

সিআরএন সংস্করণেও @radk?
আইভিন্ধহামার

আমি তাই মখমল। বর্তমানে 0.7-2ক্র্যানে এবং এটি এখানে rdocamentation.org/packages/sf/versions/0.7-2/topics/…
রাদেক

উত্তর:


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) L` এর মধ্যে কোনওটি দেবের মধ্যে থাকতে পারে, ক্র্যান নয় যদিও আমি স্থানীয়ভাবে কোথায় আছি তা যত্ন সহকারে পরীক্ষা করছি না।
mdsumner

@ এমডিস্মনার একটি দুর্দান্ত, পরোক্ষ, পয়েন্ট তৈরি করে। কাউকে আসলে পদ্ধতিটি লিখতে হবে, যাদু দ্বারা এটি ঘটে না। যেহেতু এসএফ আরে একটি নতুন অবজেক্ট শ্রেণি হিসাবে অনেকগুলি পদ্ধতি উপলব্ধ নাও হতে পারে এবং প্রত্যাশার মতো আচরণ করে না।
জেফ্রি ইভান্স 15

34

জ্যামিতি ছাড়াই কোনও এসএফ অবজেক্টকে একটি সাধারণ ডেটা ফ্রেমে রূপান্তর করার জন্য এখানে পাইপযোগ্য পদ্ধতি রয়েছে। 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"

সম্পাদনা

উপর 11/16/2018 , st_drop_geometry()SF, যা এই স্পষ্টভাবে করে যোগ করা হয়েছিল:

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

-5
df <- df[,-geometry_column]

অথবা ঠিক df[,-geometry_column]যদি আপনি নতুন অবজেক্ট তৈরি করতে না চান

কোথায়:

df - আপনার অবজেক্ট

জ্যামিতি_কলোম - কলাম যেখানে জ্যামিতি সঞ্চিত থাকে


আমার শেষ কাজ করে না। আপনি এটি পরীক্ষা করেছেন? আমি করি sf[, -sf$geometry]এবং পেয়ে Error in Ops.sfc(grid.sf$geometry) : argument "e2" is missing, with no default
যাচ্ছি

এসএফ চেষ্টা করুন [, - জ্যামিতি] এসএফ নয় [, - এসএফ $ জ্যামিতি]
অ্যামি

sf[, -geometry]সঙ্গে ব্যর্থ Error in -"geometry" : invalid argument to unary operator। পুনরুত্পাদন করুনdata(meuse, package = "sp"); meuse_sf <- st_as_sf(meuse); meuse_sf[, -geometry]
আইভিন্দহ্যামার 18'17

5
এটি কোনওভাবেই কাজ করে না। সম্ভবত এটি কিছু পূর্বের sfপ্যাকেজটিতে করেছিল তবে এখন তা হয় না। sfডেটা ফ্রেমের সমস্ত সাবসেটিং জ্যামিতি কলাম সংরক্ষণ করে। দয়া করে মুছে দিন.
স্পেসডম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.